Messages in this thread | | | Date | Fri, 16 Apr 2021 19:28:52 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v5] sched/debug: Use sched_debug_lock to serialize use of cgroup_path[] only |
| |
On Thu, Apr 15, 2021 at 03:54:26PM -0400, Waiman Long wrote: > The handling of sysrq key can be activated by echoing the key to > /proc/sysrq-trigger or via the magic key sequence typed into a terminal > that is connected to the system in some way (serial, USB or other mean). > In the former case, the handling is done in a user context. In the > latter case, it is likely to be in an interrupt context. > > Currently in print_cpu() of kernel/sched/debug.c, sched_debug_lock is > taken with interrupt disabled for the whole duration of the calls to > print_*_stats() and print_rq() which could last for the quite some time > if the information dump happens on the serial console. > > If the system has many cpus and the sched_debug_lock is somehow busy > (e.g. parallel sysrq-t), the system may hit a hard lockup panic > depending on the actually serial console implementation of the > system. For instance, > ... > > The purpose of sched_debug_lock is to serialize the use of the global > cgroup_path[] buffer in print_cpu(). The rests of the printk calls don't > need serialization from sched_debug_lock. > > Calling printk() with interrupt disabled can still be problematic if > multiple instances are running. Allocating a stack buffer of PATH_MAX > bytes is not feasible because of the limited size of the kernel stack. > > The solution implemented in this patch is to allow only one caller at a > time to use the full size group_path[], while other simultaneous callers > will have to use shorter stack buffers with the possibility of path > name truncation. A "..." suffix will be printed if truncation may have > happened. The cgroup path name is provided for informational purpose > only, so occasional path name truncation should not be a big problem. > > Fixes: efe25c2c7b3a ("sched: Reinstate group names in /proc/sched_debug") > Suggested-by: Peter Zijlstra <peterz@infradead.org> > Signed-off-by: Waiman Long <longman@redhat.com>
Thanks!
| |