Re: [PATCH v1 1/1] mtd: mtdpart: Do not supply NULL to printf()

From: Zhihao Cheng
Date: Thu Mar 13 2025 - 06:57:26 EST


在 2025/3/13 17:09, Andy Shevchenko 写道:
On Thu, Mar 13, 2025 at 09:24:21AM +0800, Zhihao Cheng wrote:
在 2025/3/13 4:16, Andy Shevchenko 写道:
Compiler is not happy about NULL being supplied as printf() parameter:

printf -> printk? The title has the same issue.

drivers/mtd/mtdpart.c:693:34: error: ‘%s’ directive argument is null [-Werror=format-overflow=]

Replace that with "(null)" to fix compilation error.

Reviewed-by: Zhihao Cheng <chengzhihao1@xxxxxxxxxx>

Thank you!

But I think my approach is a hack, the best is to move this message to the
after the follow up conditional and drop that ternary completely as we have
already another debug message before that. So, the parser == NULL can be
deducted from the appearance of the one and not the other one.

I'll send a v2.

if (!parser && !request_module("%s", *types))
parser = mtd_part_parser_get(*types);
pr_debug("%s: got parser %s\n", master->name,
- parser ? parser->name : NULL);
+ parser ? parser->name : "(null)");
if (!parser)
continue;

(move it here)

After looking through 8e2c992b59fc("mtd: mtdpart: add debug prints to partition parser.") and 01f9c7240a90("mtd: partitions: factor out code calling parser"), I think we'd better keep the debug message before the condition 'if (!parser)', it is used to inform us whether we get a parser and which name it is. And the debug message in mtd_part_do_parse informs us the result of the 'parser->parse_fn'.

ret = mtd_part_do_parse(parser, master, &pparts, data);