2018-07-10 06:47:49

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning after merge of the printk tree

Hi all,

After merging the printk tree, today's linux-next build (x86_64
allnoconfig) produced this warning:

kernel/printk/printk.c:2033:13: warning: 'suppress_message_printing' defined but not used [-Wunused-function]
static bool suppress_message_printing(int level) { return false; }
^~~~~~~~~~~~~~~~~~~~~~~~~

Introduced by commit

375899cddcbb ("printk: make sure to print log on console.")

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2018-07-10 07:19:01

by Maninder Singh

[permalink] [raw]
Subject: RE: linux-next: build warning after merge of the printk tree

Hi Petr,

> Hi all,

> After merging the printk tree, today's linux-next build (x86_64
> allnoconfig) produced this warning:

> kernel/printk/printk.c:2033:13: warning: 'suppress_message_printing' defined but not used [-Wunused-function]
> static bool suppress_message_printing(int level) { return false; }
^~~~~~~~~~~~~~~~~~~~~~~~~

seems there is no user for suppress_message_printing when CONFIG_PRINTK is disabled,
because earlier it was getting used in console_unlock and now we shifted this into vprintk_emit
which will be disabled on disabling CONFIG_PRINTk.

should we remove this defination when CONFIG_PRINTK is disabled ?

> Introduced by commit
> 375899cddcbb ("printk: make sure to print log on console.")


Attachments:
No File Name 0 (499.00 B)

2018-07-10 09:20:13

by Petr Mladek

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the printk tree

On Tue 2018-07-10 12:46:14, Maninder Singh wrote:
> Hi Petr,
>
> > Hi all,
>
> > After merging the printk tree, today's linux-next build (x86_64
> > allnoconfig) produced this warning:
>
> > kernel/printk/printk.c:2033:13: warning: 'suppress_message_printing' defined but not used [-Wunused-function]
> > static bool suppress_message_printing(int level) { return false; }
> ^~~~~~~~~~~~~~~~~~~~~~~~~
>
> seems there is no user for suppress_message_printing when CONFIG_PRINTK is disabled,
> because earlier it was getting used in console_unlock and now we shifted this into vprintk_emit
> which will be disabled on disabling CONFIG_PRINTk.
>
> should we remove this defination when CONFIG_PRINTK is disabled ?
>
> > Introduced by commit
> > 375899cddcbb ("printk: make sure to print log on console.")

Grr, I wonder how I missed it. I usually try build with CONFIG_PRINTK
disabled.

Anyway, I have just pushed the following patch into printk.git,
branch for-4.19:


From 7b83946e61a1e4a080d48c24396aeb18b6366203 Mon Sep 17 00:00:00 2001
From: Petr Mladek <[email protected]>
Date: Tue, 10 Jul 2018 10:44:53 +0200
Subject: [PATCH] printk: Fix warning about unused suppress_message_printing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

suppress_message_printing() is not longer called in console_unlock().
Therefore it is not longer needed with disabled CONFIG_PRINTK.

This fixes the warning:

kernel/printk/printk.c:2033:13: warning: ‘suppress_message_printing’ defined but not used [-Wunused-function]
static bool suppress_message_printing(int level) { return false; }

Reported-by: Stephen Rothwell <[email protected]>
Suggested-by: Maninder Singh <[email protected]>
Signed-off-by: Petr Mladek <[email protected]>
---
kernel/printk/printk.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index fcc1992c040a..e2cb0fc18e2d 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2021,7 +2021,6 @@ static void call_console_drivers(const char *ext_text, size_t ext_len,
const char *text, size_t len) {}
static size_t msg_print_text(const struct printk_log *msg,
bool syslog, char *buf, size_t size) { return 0; }
-static bool suppress_message_printing(int level) { return false; }

#endif /* CONFIG_PRINTK */

--
2.13.7



2018-07-10 11:55:25

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] printk: Fix warning about unused suppress_message_printing

Hi Petr,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.18-rc4 next-20180709]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Petr-Mladek/printk-Fix-warning-about-unused-suppress_message_printing/20180710-174802
config: ia64-allnoconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 8.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=8.1.0 make.cross ARCH=ia64

All errors (new ones prefixed by >>):

kernel/printk/printk.c: In function 'console_unlock':
>> kernel/printk/printk.c:2351:7: error: implicit declaration of function 'suppress_message_printing' [-Werror=implicit-function-declaration]
if (suppress_message_printing(msg->level)) {
^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/suppress_message_printing +2351 kernel/printk/printk.c

a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2273
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2274 /**
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2275 * console_unlock - unlock the console system
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2276 *
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2277 * Releases the console_lock which the caller holds on the console system
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2278 * and the console driver list.
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2279 *
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2280 * While the console_lock was held, console output may have been buffered
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2281 * by printk(). If this is the case, console_unlock(); emits
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2282 * the output prior to releasing the lock.
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2283 *
7f3a781d6 kernel/printk.c Kay Sievers 2012-05-09 2284 * If there is output waiting, we wake /dev/kmsg and syslog() users.
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2285 *
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2286 * console_unlock(); may be called from any context.
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2287 */
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2288 void console_unlock(void)
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2289 {
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2290 static char ext_text[CONSOLE_EXT_LOG_MAX];
704982531 kernel/printk.c Kay Sievers 2012-07-16 2291 static char text[LOG_LINE_MAX + PREFIX_MAX];
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2292 unsigned long flags;
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2293 bool do_cond_resched, retry;
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2294
557240b48 kernel/printk.c Linus Torvalds 2006-06-19 2295 if (console_suspended) {
bd8d7cf5b kernel/printk/printk.c Jan Kara 2014-06-04 2296 up_console_sem();
557240b48 kernel/printk.c Linus Torvalds 2006-06-19 2297 return;
557240b48 kernel/printk.c Linus Torvalds 2006-06-19 2298 }
78944e549 kernel/printk.c Antonino A. Daplas 2006-08-05 2299
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2300 /*
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2301 * Console drivers are called with interrupts disabled, so
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2302 * @console_may_schedule should be cleared before; however, we may
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2303 * end up dumping a lot of lines, for example, if called from
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2304 * console registration path, and should invoke cond_resched()
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2305 * between lines if allowable. Not doing so can cause a very long
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2306 * scheduling stall on a slow console leading to RCU stall and
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2307 * softlockup warnings which exacerbate the issue with more
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2308 * messages practically incapacitating the system.
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2309 *
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2310 * console_trylock() is not able to detect the preemptive
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2311 * context reliably. Therefore the value must be stored before
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2312 * and cleared after the the "again" goto label.
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2313 */
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2314 do_cond_resched = console_may_schedule;
257ab4431 kernel/printk/printk.c Petr Mladek 2017-03-24 2315 again:
78944e549 kernel/printk.c Antonino A. Daplas 2006-08-05 2316 console_may_schedule = 0;
78944e549 kernel/printk.c Antonino A. Daplas 2006-08-05 2317
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2318 /*
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2319 * We released the console_sem lock, so we need to recheck if
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2320 * cpu is online and (if not) is there at least one CON_ANYTIME
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2321 * console.
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2322 */
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2323 if (!can_use_console()) {
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2324 console_locked = 0;
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2325 up_console_sem();
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2326 return;
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2327 }
a8199371a kernel/printk/printk.c Sergey Senozhatsky 2016-03-17 2328
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2329 for (;;) {
62e32ac35 kernel/printk/printk.c Joe Perches 2013-07-31 2330 struct printk_log *msg;
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2331 size_t ext_len = 0;
3ce9a7c0a kernel/printk.c Kay Sievers 2012-05-13 2332 size_t len;
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2333
f975237b7 kernel/printk/printk.c Sergey Senozhatsky 2016-12-27 2334 printk_safe_enter_irqsave(flags);
f975237b7 kernel/printk/printk.c Sergey Senozhatsky 2016-12-27 2335 raw_spin_lock(&logbuf_lock);
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2336 if (console_seq < log_first_seq) {
9afe77ed8 kernel/printk/printk.c Maxim Akristiniy 2017-10-23 2337 len = sprintf(text, "** %u printk messages dropped **\n",
84b5ec8a9 kernel/printk/printk.c Will Deacon 2014-06-04 2338 (unsigned)(log_first_seq - console_seq));
84b5ec8a9 kernel/printk/printk.c Will Deacon 2014-06-04 2339
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2340 /* messages are gone, move to first one */
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2341 console_seq = log_first_seq;
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2342 console_idx = log_first_idx;
84b5ec8a9 kernel/printk/printk.c Will Deacon 2014-06-04 2343 } else {
84b5ec8a9 kernel/printk/printk.c Will Deacon 2014-06-04 2344 len = 0;
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2345 }
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2346 skip:
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2347 if (console_seq == log_next_seq)
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2348 break;
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2349
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2350 msg = log_from_idx(console_idx);
d9c23523e kernel/printk/printk.c Sergey Senozhatsky 2016-12-24 @2351 if (suppress_message_printing(msg->level)) {
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2352 /*
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2353 * Skip record we have buffered and already printed
cf7754441 kernel/printk/printk.c Sergey Senozhatsky 2016-08-02 2354 * directly to the console when we received it, and
cf7754441 kernel/printk/printk.c Sergey Senozhatsky 2016-08-02 2355 * record that has level above the console loglevel.
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2356 */
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2357 console_idx = log_next(console_idx);
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2358 console_seq++;
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2359 goto skip;
084681d14 kernel/printk.c Kay Sievers 2012-06-28 2360 }
649e6ee33 kernel/printk.c Kay Sievers 2012-05-10 2361
cca10d58d kernel/printk/printk.c Sergey Senozhatsky 2017-12-21 2362 len += msg_print_text(msg,
cca10d58d kernel/printk/printk.c Sergey Senozhatsky 2017-12-21 2363 console_msg_format & MSG_FORMAT_SYSLOG,
cca10d58d kernel/printk/printk.c Sergey Senozhatsky 2017-12-21 2364 text + len,
cca10d58d kernel/printk/printk.c Sergey Senozhatsky 2017-12-21 2365 sizeof(text) - len);
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2366 if (nr_ext_console_drivers) {
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2367 ext_len = msg_print_ext_header(ext_text,
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2368 sizeof(ext_text),
5aa068ea4 kernel/printk/printk.c Linus Torvalds 2016-10-25 2369 msg, console_seq);
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2370 ext_len += msg_print_ext_body(ext_text + ext_len,
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2371 sizeof(ext_text) - ext_len,
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2372 log_dict(msg), msg->dict_len,
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2373 log_text(msg), msg->text_len);
6fe29354b kernel/printk/printk.c Tejun Heo 2015-06-25 2374 }
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2375 console_idx = log_next(console_idx);
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2376 console_seq++;
07354eb1a kernel/printk.c Thomas Gleixner 2009-07-25 2377 raw_spin_unlock(&logbuf_lock);
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2378
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2379) /*
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2380) * While actively printing out messages, if another printk()
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2381) * were to occur on another CPU, it may wait for this one to
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2382) * finish. This task can not be preempted if there is a
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2383) * waiter waiting to take over.
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2384) */
c162d5b43 kernel/printk/printk.c Petr Mladek 2018-01-12 2385 console_lock_spinning_enable();
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2386)
81d68a96a kernel/printk.c Steven Rostedt 2008-05-12 2387 stop_critical_timings(); /* don't trace print latency */
d9c23523e kernel/printk/printk.c Sergey Senozhatsky 2016-12-24 2388 call_console_drivers(ext_text, ext_len, text, len);
81d68a96a kernel/printk.c Steven Rostedt 2008-05-12 2389 start_critical_timings();
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2390)
c162d5b43 kernel/printk/printk.c Petr Mladek 2018-01-12 2391 if (console_lock_spinning_disable_and_check()) {
c162d5b43 kernel/printk/printk.c Petr Mladek 2018-01-12 2392 printk_safe_exit_irqrestore(flags);
43a17111c kernel/printk/printk.c Sergey Senozhatsky 2018-04-19 2393 return;
c162d5b43 kernel/printk/printk.c Petr Mladek 2018-01-12 2394 }
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2395)
f975237b7 kernel/printk/printk.c Sergey Senozhatsky 2016-12-27 2396 printk_safe_exit_irqrestore(flags);
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2397
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2398 if (do_cond_resched)
8d91f8b15 kernel/printk/printk.c Tejun Heo 2016-01-15 2399 cond_resched();
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2400 }
dbdda842f kernel/printk/printk.c Steven Rostedt (VMware 2018-01-10 2401)
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2402 console_locked = 0;
fe3d8ad31 kernel/printk.c Feng Tang 2011-03-22 2403
fe3d8ad31 kernel/printk.c Feng Tang 2011-03-22 2404 /* Release the exclusive_console once it is used */
fe3d8ad31 kernel/printk.c Feng Tang 2011-03-22 2405 if (unlikely(exclusive_console))
fe3d8ad31 kernel/printk.c Feng Tang 2011-03-22 2406 exclusive_console = NULL;
fe3d8ad31 kernel/printk.c Feng Tang 2011-03-22 2407
07354eb1a kernel/printk.c Thomas Gleixner 2009-07-25 2408 raw_spin_unlock(&logbuf_lock);
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2409
bd8d7cf5b kernel/printk/printk.c Jan Kara 2014-06-04 2410 up_console_sem();
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2411
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2412 /*
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2413 * Someone could have filled up the buffer again, so re-check if there's
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2414 * something to flush. In case we cannot trylock the console_sem again,
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2415 * there's a new owner and the console_unlock() from them will do the
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2416 * flush, no worries.
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2417 */
07354eb1a kernel/printk.c Thomas Gleixner 2009-07-25 2418 raw_spin_lock(&logbuf_lock);
7ff9554bb kernel/printk.c Kay Sievers 2012-05-03 2419 retry = console_seq != log_next_seq;
f975237b7 kernel/printk/printk.c Sergey Senozhatsky 2016-12-27 2420 raw_spin_unlock(&logbuf_lock);
f975237b7 kernel/printk/printk.c Sergey Senozhatsky 2016-12-27 2421 printk_safe_exit_irqrestore(flags);
09dc3cf93 kernel/printk.c Peter Zijlstra 2011-12-08 2422
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2423 if (retry && console_trylock())
4f2a8d3cf kernel/printk.c Peter Zijlstra 2011-06-22 2424 goto again;
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2425 }
ac751efa6 kernel/printk.c Torben Hohn 2011-01-25 2426 EXPORT_SYMBOL(console_unlock);
^1da177e4 kernel/printk.c Linus Torvalds 2005-04-16 2427

:::::: The code at line 2351 was first introduced by commit
:::::: d9c23523ed98a3acaa0bfd8fef143595d6aa631d printk: drop call_console_drivers() unused param

:::::: TO: Sergey Senozhatsky <[email protected]>
:::::: CC: Petr Mladek <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


Attachments:
(No filename) (17.25 kB)
.config.gz (5.40 kB)
Download all attachments

2018-07-10 13:17:12

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the printk tree

On (07/10/18 11:19), Petr Mladek wrote:
> suppress_message_printing() is not longer called in console_unlock().
> Therefore it is not longer needed with disabled CONFIG_PRINTK.
>
> This fixes the warning:
>
> kernel/printk/printk.c:2033:13: warning: ‘suppress_message_printing’ defined but not used [-Wunused-function]
> static bool suppress_message_printing(int level) { return false; }
>
> Reported-by: Stephen Rothwell <[email protected]>
> Suggested-by: Maninder Singh <[email protected]>
> Signed-off-by: Petr Mladek <[email protected]>

Acked-by: Sergey Senozhatsky <[email protected]>


Happens all the time to me as well. I'd rather remove CONFIG_PRINTK
at this point ;)


-ss