public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PROBLEM linux-next]
@ 2024-07-07  0:10 Mirsad Todorovac
  2024-07-07  7:37 ` Rafał Miłecki
  0 siblings, 1 reply; 8+ messages in thread
From: Mirsad Todorovac @ 2024-07-07  0:10 UTC (permalink / raw)
  To: linux-mtd
  Cc: Rafał Miłecki, Richard Weinberger, Vignesh Raghavendra,
	linux-kernel, Miquel Raynal

Hi, all,

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is GCC (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular error is as follows:

In file included from ./include/asm-generic/bug.h:22,
                 from ./arch/x86/include/asm/bug.h:87,
                 from ./include/linux/bug.h:5,
                 from ./include/linux/fortify-string.h:6,
                 from ./include/linux/string.h:374,
                 from ./arch/x86/include/asm/page_32.h:18,
                 from ./arch/x86/include/asm/page.h:14,
                 from ./arch/x86/include/asm/processor.h:20,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:67,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from drivers/mtd/mtdpart.c:10:
drivers/mtd/mtdpart.c: In function ‘parse_mtd_partitions’:
drivers/mtd/mtdpart.c:693:34: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                                  ^~~~~~~~~~~~~~~~~~~~~
./include/linux/printk.h:376:21: note: in definition of macro ‘pr_fmt’
  376 | #define pr_fmt(fmt) fmt
      |                     ^~~
./include/linux/dynamic_debug.h:248:9: note: in expansion of macro ‘__dynamic_func_call_cls’
  248 |         __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~~~~~~~~
./include/linux/dynamic_debug.h:250:9: note: in expansion of macro ‘_dynamic_func_call_cls’
  250 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~~~~~~~
./include/linux/dynamic_debug.h:269:9: note: in expansion of macro ‘_dynamic_func_call’
  269 |         _dynamic_func_call(fmt, __dynamic_pr_debug,             \
      |         ^~~~~~~~~~~~~~~~~~
./include/linux/printk.h:610:9: note: in expansion of macro ‘dynamic_pr_debug’
  610 |         dynamic_pr_debug(fmt, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~
drivers/mtd/mtdpart.c:693:25: note: in expansion of macro ‘pr_debug’
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                         ^~~~~~~~
drivers/mtd/mtdpart.c:693:50: note: format string is defined here
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                                                  ^~

Offending commit is 5b644aa012f67.

Offending code is here:

  668 int parse_mtd_partitions(struct mtd_info *master, const char *const *types,
  669                          struct mtd_part_parser_data *data)
  670 {
  671         struct mtd_partitions pparts = { };
  672         struct mtd_part_parser *parser;
  673         int ret, err = 0;
  674 
  675         if (!types)
  676                 types = mtd_is_partition(master) ? default_subpartition_types :
  677                         default_mtd_part_types;
  678 
  679         for ( ; *types; types++) {
  680                 /*
  681                  * ofpart is a special type that means OF partitioning info
  682                  * should be used. It requires a bit different logic so it is
  683                  * handled in a separated function.
  684                  */
  685                 if (!strcmp(*types, "ofpart")) {
  686                         ret = mtd_part_of_parse(master, &pparts);
  687                 } else {
  688                         pr_debug("%s: parsing partitions %s\n", master->name,
  689                                  *types);
  690                         parser = mtd_part_parser_get(*types);
  691                         if (!parser && !request_module("%s", *types))
  692                                 parser = mtd_part_parser_get(*types);
→ 693                         pr_debug("%s: got parser %s\n", master->name,
→ 694                                 parser ? parser->name : NULL);
  695                         if (!parser)
  696                                 continue;
  697                         ret = mtd_part_do_parse(parser, master, &pparts, data);
  698                         if (ret <= 0)
  699                                 mtd_part_parser_put(parser);
  700                 }
  701                 /* Found partitions! */
  702                 if (ret > 0) {
  703                         err = add_mtd_partitions(master, pparts.parts,
  704                                                  pparts.nr_parts);
  705                         mtd_part_parser_cleanup(&pparts);
  706                         return err ? err : pparts.nr_parts;
  707                 }
  708                 /*
  709                  * Stash the first error we see; only report it if no parser
  710                  * succeeds
  711                  */
  712                 if (ret < 0 && !err)
  713                         err = ret;
  714         }
  715         return err;
  716 }

Proposed non-intrusive fix resolves the warning/error, but I could not test the code.
(I don't have the physical device.)

-----------------><------------------------------------------
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 6811a714349d..81665d67ed2d 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -691,7 +691,7 @@ int parse_mtd_partitions(struct mtd_info *master, const char *const *types,
                        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;
                        ret = mtd_part_do_parse(parser, master, &pparts, data);


Hope this helps.

Best regards,
Mirsad Todorovac

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PROBLEM linux-next]
@ 2024-07-09 21:14 Mirsad Todorovac
  0 siblings, 0 replies; 8+ messages in thread
From: Mirsad Todorovac @ 2024-07-09 21:14 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Alexandre Bounine, Matt Porter

Dear all,

On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F
which was known from before to trigger various errors in compile and build process.

Though this might seem as contributing to channel noise, Linux refuses to build this config,
treating warnings as errors, using this build line:

$ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date

As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty
left, there seems to be more tedious work ahead to make the compilers happy.

The compiler output is:

drivers/rapidio/rio_cm.c: In function ‘rio_txcq_handler’:
drivers/rapidio/rio_cm.c:675:21: error: variable ‘rc’ set but not used [-Werror=unused-but-set-variable]
  675 |                 int rc;
      |                     ^~
cc1: all warnings being treated as errors

   670         /*
   671          * If there are pending requests, insert them into transmit queue
   672          */
   673         if (!list_empty(&cm->tx_reqs) && (cm->tx_cnt < RIOCM_TX_RING_SIZE)) {
   674                 struct tx_req *req, *_req;
 → 675                 int rc;
   676 
   677                 list_for_each_entry_safe(req, _req, &cm->tx_reqs, node) {
   678                         list_del(&req->node);
   679                         cm->tx_buf[cm->tx_slot] = req->buffer;
 → 680                         rc = rio_add_outb_message(cm->mport, req->rdev, cmbox,
   681                                                   req->buffer, req->len);
   682                         kfree(req->buffer);
   683                         kfree(req);
   684 
   685                         ++cm->tx_cnt;
   686                         ++cm->tx_slot;
   687                         cm->tx_slot &= (RIOCM_TX_RING_SIZE - 1);
   688                         if (cm->tx_cnt == RIOCM_TX_RING_SIZE)
   689                                 break;
   690                 }
   691         }
   692 
   693         spin_unlock(&cm->tx_lock);
   694 }

Hope this helps.

Best regards,
Mirsad Todorovac

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-07-09 21:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-07  0:10 [PROBLEM linux-next] Mirsad Todorovac
2024-07-07  7:37 ` Rafał Miłecki
2024-07-07  8:12   ` Jonas Gorski
2024-07-07 14:09     ` Mirsad Todorovac
2024-07-07 14:45       ` Mirsad Todorovac
2024-07-07 14:53       ` [PROBLEM linux-next] drivers/mtd/mtdpart.c:693:34: error: ‘%s’ directive argument is null Mirsad Todorovac
2024-07-07 13:05   ` Mirsad Todorovac
  -- strict thread matches above, loose matches on Subject: below --
2024-07-09 21:14 [PROBLEM linux-next] Mirsad Todorovac

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox