The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after ark-5.14 ------> commit 3c1d5ceee159759b4e83a162d7a45d18f62a7f1a Author: Stanislav Kinsburskiy <skinsbur...@virtuozzo.com> Date: Mon Dec 4 17:00:11 2017 +0300
ve/printk: per-CT printk helpers introduced https://jira.sw.ru/browse/PSBM-39077 https://jira.sw.ru/browse/PSBM-54183 https://jira.sw.ru/browse/PSBM-42313 Signed-off-by: Vladimir Davydov <vdavy...@parallels.com> Signed-off-by: Andrew Vagin <ava...@virtuozzo.com> Signed-off-by: Dmitry Safonov <dsafo...@virtuozzo.com> Signed-off-by: Stanislav Kinsburskiy <skinsbur...@virtuozzo.com> (cherry picked from vz8 commit 9a32046846c4fa272ec44e70fdbc3ebc09b10307) Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> --- include/linux/printk.h | 33 +++++++++++++++++++++++++++++++++ kernel/printk/printk.c | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/include/linux/printk.h b/include/linux/printk.h index 6e14c410a2df..7c38dd438cc2 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -189,6 +189,8 @@ int ve_printk(int dst, const char *fmt, ...); struct ve_struct; int ve_log_init(struct ve_struct *ve); void ve_log_destroy(struct ve_struct *ve); +asmlinkage __printf(2, 3) __cold +int ve_log_printk(struct ve_struct *ve, const char *s, ...); /* * Special printk facility for scheduler/timekeeping use only, _DO_NOT_USE_ ! @@ -255,6 +257,11 @@ static inline void ve_log_destroy(struct ve_struct *ve) { } +static inline __printf(2, 3) __cold +int ve_log_printk(struct ve_struct *ve, const char *s, ...) +{ + return 0; +} static inline __printf(1, 2) __cold int printk_deferred(const char *s, ...) { @@ -573,9 +580,21 @@ extern int kptr_restrict; if (__ratelimit(&_rs)) \ printk(fmt, ##__VA_ARGS__); \ }) + +#define ve_printk_ratelimited(dst, fmt, ...) \ +({ \ + static DEFINE_RATELIMIT_STATE(_rs, \ + DEFAULT_RATELIMIT_INTERVAL, \ + DEFAULT_RATELIMIT_BURST); \ + \ + if (__ratelimit(&_rs)) \ + ve_printk(dst, fmt, ##__VA_ARGS__); \ +}) #else #define printk_ratelimited(fmt, ...) \ no_printk(fmt, ##__VA_ARGS__) +#define ve_printk_ratelimited(dst, fmt, ...) \ + no_printk(fmt, ##__VA_ARGS__) #endif #define pr_emerg_ratelimited(fmt, ...) \ @@ -593,6 +612,20 @@ extern int kptr_restrict; #define pr_info_ratelimited(fmt, ...) \ printk_ratelimited(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) /* no pr_cont_ratelimited, don't do that... */ +#define ve_pr_emerg_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_alert_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_crit_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_err_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_warn_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_notice_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__) +#define ve_pr_info_ratelimited(dst, fmt, ...) \ + ve_printk_ratelimited(dst, KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) #if defined(DEBUG) #define pr_devel_ratelimited(fmt, ...) \ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index f3b5dbd9db6d..47ec962371ae 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -568,7 +568,7 @@ static int check_syslog_permissions(int type, int source) goto ok; if (syslog_action_restricted(type)) { - if (capable(CAP_SYSLOG)) + if (ve_capable(CAP_SYSLOG)) goto ok; /* * For historical reasons, accept CAP_SYS_ADMIN too, with _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel