mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 14:52:05 +00:00
cifs: Ratelimit kernel log messages
Under some conditions, CIFS can repeatedly call the cifs_dbg() logging wrapper. If done rapidly enough, the console framebuffer can softlockup or "rcu_sched self-detected stall". Apply the built-in log ratelimiters to prevent such hangs. Signed-off-by: Jamie Bainbridge <jamie.bainbridge@gmail.com> Signed-off-by: Steve French <smfrench@gmail.com> CC: Stable <stable@vger.kernel.org>
This commit is contained in:
parent
7fdec82af6
commit
ec7147a99e
@ -50,7 +50,7 @@ void cifs_vfs_err(const char *fmt, ...)
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
|
||||
pr_err("CIFS VFS: %pV", &vaf);
|
||||
pr_err_ratelimited("CIFS VFS: %pV", &vaf);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
|
@ -51,14 +51,13 @@ __printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
|
||||
/* information message: e.g., configuration, major event */
|
||||
#define cifs_dbg(type, fmt, ...) \
|
||||
do { \
|
||||
if (type == FYI) { \
|
||||
if (cifsFYI & CIFS_INFO) { \
|
||||
pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__); \
|
||||
} \
|
||||
if (type == FYI && cifsFYI & CIFS_INFO) { \
|
||||
pr_debug_ratelimited("%s: " \
|
||||
fmt, __FILE__, ##__VA_ARGS__); \
|
||||
} else if (type == VFS) { \
|
||||
cifs_vfs_err(fmt, ##__VA_ARGS__); \
|
||||
} else if (type == NOISY && type != 0) { \
|
||||
pr_debug(fmt, ##__VA_ARGS__); \
|
||||
pr_debug_ratelimited(fmt, ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user