lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 25 Oct 2018 18:51:01 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>
Cc:     kbuild-all@...org, linux-kernel@...r.kernel.org,
        Petr Mladek <pmladek@...e.com>,
        Steven Rostedt <rostedt@...dmis.org>,
        Daniel Wang <wonderfly@...gle.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Andrew Morton <akpm@...ux-foundation.org>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Alan Cox <gnomes@...rguk.ukuu.org.uk>,
        Jiri Slaby <jslaby@...e.com>,
        Peter Feiner <pfeiner@...gle.com>,
        linux-serial@...r.kernel.org,
        Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>,
        Sergey Senozhatsky <sergey.senozhatsky@...il.com>
Subject: Re: [PATCHv3] panic: avoid deadlocks in re-entrant console drivers

Hi Sergey,

I love your patch! Yet something to improve:

[auto build test ERROR on linux-sof-driver/master]
[also build test ERROR on v4.19 next-20181019]
[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/Sergey-Senozhatsky/panic-avoid-deadlocks-in-re-entrant-console-drivers/20181025-181929
base:   https://github.com/thesofproject/linux master
config: i386-randconfig-x077-201842 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   kernel/panic.c: In function 'panic':
>> kernel/panic.c:237:2: error: implicit declaration of function 'unblank_screen' [-Werror=implicit-function-declaration]
     unblank_screen();
     ^~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/unblank_screen +237 kernel/panic.c

   186	
   187		/*
   188		 * If we have crashed and we have a crash kernel loaded let it handle
   189		 * everything else.
   190		 * If we want to run this after calling panic_notifiers, pass
   191		 * the "crash_kexec_post_notifiers" option to the kernel.
   192		 *
   193		 * Bypass the panic_cpu check and call __crash_kexec directly.
   194		 */
   195		if (!_crash_kexec_post_notifiers) {
   196			printk_safe_flush_on_panic();
   197			__crash_kexec(NULL);
   198	
   199			/*
   200			 * Note smp_send_stop is the usual smp shutdown function, which
   201			 * unfortunately means it may not be hardened to work in a
   202			 * panic situation.
   203			 */
   204			smp_send_stop();
   205		} else {
   206			/*
   207			 * If we want to do crash dump after notifier calls and
   208			 * kmsg_dump, we will need architecture dependent extra
   209			 * works in addition to stopping other CPUs.
   210			 */
   211			crash_smp_send_stop();
   212		}
   213	
   214		/*
   215		 * Run any panic handlers, including those that might need to
   216		 * add information to the kmsg dump output.
   217		 */
   218		atomic_notifier_call_chain(&panic_notifier_list, 0, buf);
   219	
   220		/* Call flush even twice. It tries harder with a single online CPU */
   221		printk_safe_flush_on_panic();
   222		kmsg_dump(KMSG_DUMP_PANIC);
   223	
   224		/*
   225		 * If you doubt kdump always works fine in any situation,
   226		 * "crash_kexec_post_notifiers" offers you a chance to run
   227		 * panic_notifiers and dumping kmsg before kdump.
   228		 * Note: since some panic_notifiers can make crashed kernel
   229		 * more unstable, it can increase risks of the kdump failure too.
   230		 *
   231		 * Bypass the panic_cpu check and call __crash_kexec directly.
   232		 */
   233		if (_crash_kexec_post_notifiers)
   234			__crash_kexec(NULL);
   235	
   236	#ifdef CONFIG_VT
 > 237		unblank_screen();
   238	#endif
   239		console_unblank();
   240	
   241		/*
   242		 * We may have ended up stopping the CPU holding the lock (in
   243		 * smp_send_stop()) while still having some valuable data in the console
   244		 * buffer.  Try to acquire the lock then release it regardless of the
   245		 * result.  The release will also print the buffers out.  Locks debug
   246		 * should be disabled to avoid reporting bad unlock balance when
   247		 * panic() is not being callled from OOPS.
   248		 */
   249		debug_locks_off();
   250		console_flush_on_panic();
   251	
   252		if (!panic_blink)
   253			panic_blink = no_blink;
   254	
   255		if (panic_timeout > 0) {
   256			/*
   257			 * Delay timeout seconds before rebooting the machine.
   258			 * We can't use the "normal" timers since we just panicked.
   259			 */
   260			pr_emerg("Rebooting in %d seconds..\n", panic_timeout);
   261	
   262			for (i = 0; i < panic_timeout * 1000; i += PANIC_TIMER_STEP) {
   263				touch_nmi_watchdog();
   264				if (i >= i_next) {
   265					i += panic_blink(state ^= 1);
   266					i_next = i + 3600 / PANIC_BLINK_SPD;
   267				}
   268				mdelay(PANIC_TIMER_STEP);
   269			}
   270		}
   271		if (panic_timeout != 0) {
   272			/*
   273			 * This will not be a clean reboot, with everything
   274			 * shutting down.  But if there is a chance of
   275			 * rebooting the system it will be rebooted.
   276			 */
   277			emergency_restart();
   278		}
   279	#ifdef __sparc__
   280		{
   281			extern int stop_a_enabled;
   282			/* Make sure the user can actually press Stop-A (L1-A) */
   283			stop_a_enabled = 1;
   284			pr_emerg("Press Stop-A (L1-A) from sun keyboard or send break\n"
   285				 "twice on console to return to the boot prom\n");
   286		}
   287	#endif
   288	#if defined(CONFIG_S390)
   289		{
   290			unsigned long caller;
   291	
   292			caller = (unsigned long)__builtin_return_address(0);
   293			disabled_wait(caller);
   294		}
   295	#endif
   296		pr_emerg("---[ end Kernel panic - not syncing: %s ]---\n", buf);
   297		local_irq_enable();
   298		for (i = 0; ; i += PANIC_TIMER_STEP) {
   299			touch_softlockup_watchdog();
   300			if (i >= i_next) {
   301				i += panic_blink(state ^= 1);
   302				i_next = i + 3600 / PANIC_BLINK_SPD;
   303			}
   304			mdelay(PANIC_TIMER_STEP);
   305		}
   306	}
   307	

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

Download attachment ".config.gz" of type "application/gzip" (33530 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ