From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 18CB080726 for ; Tue, 6 Oct 2026 21:55:38 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 696LsQFM028166; Wed, 7 Oct 2026 00:54:26 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 696LsQFM028166 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="xwhmZeCS" Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 696Ls9fQ028121 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 7 Oct 2026 00:54:09 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 696Ls9fQ028121 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4a009f82bedso15518315e9.0 for ; Tue, 06 Oct 2026 14:54:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBy3wWIRaar7dFX8wVl8zlwBL9sY7679lI1aSsCieLW2h3Dj7X6cBe01y01FIeXa66DXNX94Jw==@openvz.org X-Gm-Message-State: AFuF++n95U6DKGs8qCxmRxIgeA32FVbQh8uRtsb2byIPjqyPQBIM+zU+ hVJ4QrvORFRJTa61gL+SV2LsK2s3s7/GCZB/lSDb832SZO1jEjijWamHwDFQFIkXeEFzT2S1hxu o/H1zihBXNUWLap9D71hTzmW2C+pAIuvfdk2Rbvbm8Hckp90pj8a4Ew== X-Gm-Gg: AYBFou32G2Htyl2N/yivsN+e8Y9Wqd5RCTRrepBseJtcxea8AyS/dEl/ZVGQ+uBVFWP U+YoZVjybT/jTn55SSu5KZfpaQhmtNSgEZT/4uGxqlsB5y58p4D+uu2hBBKzlIhlzv8dflgRCAp Dd95BT84YCDMktakSbQDaK4Nu6SYjq+nY8YrCjHmfE6TS3+IFEEqnj5UcM5jmxQYZlK6ybxQAu/ cEmfN5ud8K9RwCdTnq0NuNucfzdtUiSq9iJWAl7GHxX0cL0oz3ZlT08RoWb0fzRyteY18fNquby IAEh5GtKx1WDFeuVteWXIwfSY3dqplgMcFgvpS96FFZVe3mTiq/Ac74VcIUEdSme2+JlEdpYzwr BlcWskr1SKdT4sXbGZnFj1kEFksXzCQ== X-Received: by 2002:a05:600c:1551:b0:49e:7c8c:361d with SMTP id 5b1f17b1804b1-4a18043cac2mr2251175e9.22.1791323649575; Tue, 06 Oct 2026 14:54:09 -0700 (PDT) X-Received: by 2002:a05:600c:1551:b0:49e:7c8c:361d with SMTP id 5b1f17b1804b1-4a18043cac2mr2250855e9.22.1791323648951; Tue, 06 Oct 2026 14:54:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791323648; cv=none; d=google.com; s=arc-20260327; b=JdSm9W96Ub0DPx/lopBTyGB6I26bdieFe5evcuBPOoPHcLAytI13Wmn5BSBkqJnSUd UhBTxQlr7nRaeC6AHDB7qNAxWOKY0yQftx47uUP0E+2z3bHOQUkzVOyR/+RI2s7dWHpb E1jo6Fkhs3phk2F9kvttupb6FOJsf9XnfNHs+pWlw+FOPjdcQkqmAY0+sc9TAvAR1dbp 7UTpX8vOitJgjWp59tx46OOww70wthGNgmHbUjM7Cgbzc0mrT5xlVqLaCUf8BoX8AQhB f9V5ZOCwHS5gbhjw7ENkjkkpoT4okWdwKLp5SJEiaLoxL9Y2FLmW/Q8rDMZTaIRv+jec PMVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=M68tuAbP2dpoLXiR6QkdOz1CkrnwP4SjDFrpZhQxqYc=; fh=qxDc+R3aPG8cEdp5mmd3IFOllj1eLCwZHAcc+Tf/KXA=; b=AC1UI5vXeS0IXMjGq94XVU+CXTuQHnMwuFZJqcn8Rh3ULKII8MTWxothSyOvnieJdK bgZU6cpF51HxqlotB0p/WiOE3/LaTwJMCPr4X3zvvEqOHlG2Eh69iZNqE1uEjhtW3hRJ OPQg6cOlzCKMvdYHvPEeJVIM4FZwDV1gamp36c2+wuvmghSVzYGJPGGtlT8yZhuPja5U UGUg6s6agVoxGo0a/A2j9h3sqvTUNrTV7fl6+8zrTtC25h1hX9FAbKaf6FimuV+N4dbG T7aNwgiVaarDfSLdqkGY6BT6dO0Kg3CMahpcwYldyxkfuowmBeya1Qi4PdlpOCR0GFpi RDYA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=xwhmZeCS; spf=pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48c724bc398si1232896f8f.464.2026.10.06.14.54.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Oct 2026 14:54:08 -0700 (PDT) Received-SPF: pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=xwhmZeCS; spf=pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=M68tuAbP2dpoLXiR6QkdOz1CkrnwP4SjDFrpZhQxqYc=; b=xwhmZeCSy/cINhDoqL1 cqN5f7udkSVnOL/GFb6wRW6U0B6ELLbk0ZfQXViEdeDT8g2X1sLMW0JIJC+aGpFxvZMcxKeXAvEHe MKqvYCuRfFs1xxr5mx6h+9vWFeMNq9qkMf7VKZJ9QkOexT85KkYEuh0teeJHsPlNQte9ExyCdNt47 EU7/IjvgAVK65/opFX8R9jBwnfk/uEZfFI14QFVXc/Vdr8x7XD3ZvW1ygKiiHj6IKKrZLJuUBgW8Y Xc8FCJ/sM92PB7X/FFEyts3bSyx4Lb9PY46BGh/43n6QhDT+AlyJwFH2z+4TLHWkRdw6pO5JdCyxL B98fcfhXyefKa4A==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=192.168.1.87) by relay.virtuozzo.com with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1xED3f-004Dgb-12; Tue, 06 Oct 2026 23:53:58 +0200 From: Vladimir Riabchun Date: Tue, 06 Oct 2026 23:53:54 +0200 MIME-Version: 1.0 Message-Id: <20261006-ve-printk-irq-v2-3-db1dc4f6ed07@virtuozzo.com> References: <20261006-ve-printk-irq-v2-0-db1dc4f6ed07@virtuozzo.com> In-Reply-To: <20261006-ve-printk-irq-v2-0-db1dc4f6ed07@virtuozzo.com> To: vasileios.almpanis@virtuozzo.com, Konstantin Khorenko X-Mailer: b4 0.14.3 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v2 3/6] ve/printk: Specify ve in printks X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org Introduce ve_printk helpers that accept VE structure, so we can provide correct VE where get_exec_env is unreliable. This is true for ve_printk_deferred functions, and their users. Now VE ratelimiting requires specified VE, and this requirement is further forwarded to ve_net_ratelimited kind. https://virtuozzo.atlassian.net/browse/VSTOR-146839 Feature: ve printk Signed-off-by: Vladimir Riabchun --- include/linux/net.h | 16 ++++---- include/linux/printk.h | 28 ++++++++++--- include/linux/ratelimit_types.h | 6 ++- kernel/printk/printk.c | 78 ++++++++++++++++++++++++++++++------- lib/ratelimit.c | 7 ++-- net/core/utils.c | 4 +- net/netfilter/nf_conntrack_core.c | 2 +- net/netfilter/nf_conntrack_expect.c | 2 +- net/netfilter/xt_TCPMSS.c | 4 +- 9 files changed, 110 insertions(+), 37 deletions(-) diff --git a/include/linux/net.h b/include/linux/net.h index 3f3bbe9f149d..4c34b9a0386f 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -265,7 +265,7 @@ struct socket *sockfd_lookup(int fd, int *err); struct socket *sock_from_file(struct file *file); #define sockfd_put(sock) fput(sock->file) int net_ratelimit(void); -int ve_net_ratelimit(int dst); +int ve_net_ratelimit(int dst, struct ve_struct *ve); #define net_ratelimited_function(function, ...) \ do { \ @@ -273,10 +273,10 @@ do { \ function(__VA_ARGS__); \ } while (0) -#define ve_net_ratelimited_function(function, dst, ...) \ +#define ve_net_ratelimited_function(function, dst, ve, ...) \ do { \ - if (ve_net_ratelimit(dst)) \ - function(dst, __VA_ARGS__); \ + if (ve_net_ratelimit(dst, ve)) \ + function(dst, ve, __VA_ARGS__); \ } while (0) #define net_emerg_ratelimited(fmt, ...) \ @@ -311,10 +311,10 @@ do { \ no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) #endif -#define net_velog_ratelimited(fmt, ...) \ - ve_net_ratelimited_function(ve_printk, VE_LOG, fmt, ##__VA_ARGS__) -#define net_veboth_ratelimited(fmt, ...) \ - ve_net_ratelimited_function(ve_printk, VE_LOG_BOTH, fmt, ##__VA_ARGS__) +#define net_velog_ratelimited(ve, fmt, ...) \ + ve_net_ratelimited_function(__ve_printk, VE_LOG, ve, fmt, ##__VA_ARGS__) +#define net_veboth_ratelimited(ve, fmt, ...) \ + ve_net_ratelimited_function(__ve_printk, VE_LOG_BOTH, ve, fmt, ##__VA_ARGS__) #define net_get_random_once(buf, nbytes) \ get_random_once((buf), (nbytes)) diff --git a/include/linux/printk.h b/include/linux/printk.h index 3b0af0deb6c3..a9470c81f8db 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -76,6 +76,7 @@ extern int console_printk[]; #define VE0_LOG 1 #define VE_LOG 2 #define VE_LOG_BOTH (VE0_LOG | VE_LOG) +struct ve_struct; extern void console_verbose(void); @@ -160,6 +161,11 @@ int ve_vprintk_emit(int facility, int level, const struct dev_printk_info *dev_info, const char *fmt, va_list args); +asmlinkage __printf(5, 0) +int __ve_vprintk_emit(struct ve_struct *ve, int facility, int level, + const struct dev_printk_info *dev_info, + const char *fmt, va_list args); + asmlinkage __printf(1, 0) int vprintk(const char *fmt, va_list args); __printf(1, 0) @@ -171,8 +177,11 @@ int _printk(const char *fmt, ...); asmlinkage __printf(2, 3) __cold int ve_printk(int dst, const char *fmt, ...); -asmlinkage __printf(2, 3) __cold -int ve_printk_deferred(int dst, const char *fmt, ...); +asmlinkage __printf(3, 4) __cold +int __ve_printk(int dst, struct ve_struct *ve, const char *fmt, ...); + +asmlinkage __printf(3, 4) __cold +int ve_printk_deferred(int dst, struct ve_struct *ve, const char *fmt, ...); struct ve_struct; int ve_log_init(struct ve_struct *ve); @@ -248,8 +257,13 @@ int ve_printk(int dst, const char *s, ...) { return 0; } -static inline __printf(2, 3) __cold -int ve_printk_deferred(int dst, const char *s, ...) +static inline __printf(3, 4) __cold +int __ve_printk(int dst, struct ve_struct *ve, const char *s, ...) +{ + return 0; +} +static inline __printf(3, 4) __cold +int ve_printk_deferred(int dst, struct ve_struct *ve, const char *s, ...) { return 0; } @@ -746,8 +760,12 @@ struct pi_entry { static DEFINE_RATELIMIT_STATE(_rs, \ DEFAULT_RATELIMIT_INTERVAL, \ DEFAULT_RATELIMIT_BURST); \ + struct ve_struct *__ve = get_exec_env(); \ + \ + if (WARN_ON_ONCE((dst & VE_LOG) && !in_task())) \ + __ve = get_ve0(); \ \ - if (ve_ratelimit(dst, &_rs)) \ + if (ve_ratelimit(dst, __ve, &_rs)) \ ve_printk(dst, fmt, ##__VA_ARGS__); \ }) #else diff --git a/include/linux/ratelimit_types.h b/include/linux/ratelimit_types.h index 3902066f0fee..aa9eee2a2455 100644 --- a/include/linux/ratelimit_types.h +++ b/include/linux/ratelimit_types.h @@ -44,7 +44,9 @@ struct ratelimit_state { extern int ___ratelimit(struct ratelimit_state *rs, const char *func); #define __ratelimit(state) ___ratelimit(state, __func__) -extern int __ve_ratelimit(int dst, struct ratelimit_state *rs, const char *func); -#define ve_ratelimit(dst, state) __ve_ratelimit(dst, state, __func__) +struct ve_struct; +extern int __ve_ratelimit(int dst, struct ve_struct *ve, + struct ratelimit_state *rs, const char *func); +#define ve_ratelimit(dst, ve, state) __ve_ratelimit(dst, ve, state, __func__) #endif /* _LINUX_RATELIMIT_TYPES_H */ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index b06fc835d7c7..d5680fda32ca 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -567,6 +567,16 @@ struct log_state *ve_log_state(void) return log; } +struct log_state *__ve_log_state(struct ve_struct *ve) +{ + struct log_state *log = &init_log_state; +#ifdef CONFIG_VE + if (ve->log_state) + log = ve->log_state; +#endif + return log; +} + void log_poll_wait(struct file *filp, poll_table *p) { poll_wait(filp, &ve_log_state()->wait, p); @@ -2525,26 +2535,45 @@ asmlinkage int ve_vprintk_emit(int facility, int level, } EXPORT_SYMBOL(ve_vprintk_emit); +asmlinkage int __ve_vprintk_emit(struct ve_struct *ve, int facility, int level, + const struct dev_printk_info *dev_info, + const char *fmt, va_list args) +{ + return vprintk_emit_log(__ve_log_state(ve), + facility, level, dev_info, + fmt, args); +} +EXPORT_SYMBOL(__ve_vprintk_emit); + int vprintk_default(const char *fmt, va_list args) { return vprintk_emit(0, LOGLEVEL_DEFAULT, NULL, fmt, args); } EXPORT_SYMBOL_GPL(vprintk_default); -static asmlinkage int ve_vprintk(int dst, const char *fmt, va_list args) +static asmlinkage int ve_vprintk(int dst, struct ve_struct *ve, + const char *fmt, va_list args) { va_list args2; - int r = 0; + int r = 0, ve_provided = (ve != NULL); WARN_ON_ONCE(!dst || (dst & ~VE_LOG_BOTH)); + if (!ve) + ve = get_exec_env(); + va_copy(args2, args); - if (ve_is_super(get_exec_env()) || (dst & VE0_LOG)) + if (ve_is_super(ve) || (dst & VE0_LOG)) r = vprintk(fmt, args); /* Report IRQ usage here - printing to VE requires explicit ve reference */ - if ((dst & VE_LOG) && !WARN_ON_ONCE(!in_task()) && !ve_is_super(get_exec_env())) - r = ve_vprintk_emit(0, LOGLEVEL_DEFAULT, NULL, fmt, args2); + if ((dst & VE_LOG)) { + if (!ve_provided && WARN_ON_ONCE(!in_task())) + goto done; + if (!ve_is_super(ve)) + r = __ve_vprintk_emit(ve, 0, LOGLEVEL_DEFAULT, NULL, fmt, args2); + } +done: va_end(args2); return r; @@ -2560,39 +2589,62 @@ asmlinkage int ve_printk(int dst, const char *fmt, ...) int r; va_start(args, fmt); - r = ve_vprintk(dst, fmt, args); + r = ve_vprintk(dst, NULL, fmt, args); va_end(args); return r; } EXPORT_SYMBOL(ve_printk); -static asmlinkage int ve_vprintk_deferred(int dst, const char *fmt, va_list args) +asmlinkage int __ve_printk(int dst, struct ve_struct *ve, const char *fmt, ...) +{ + va_list args; + int r; + + va_start(args, fmt); + r = ve_vprintk(dst, ve, fmt, args); + va_end(args); + + return r; +} +EXPORT_SYMBOL(__ve_printk); + +static asmlinkage int ve_vprintk_deferred(int dst, struct ve_struct *ve, + const char *fmt, va_list args) { va_list args2; - int r = 0; + int r = 0, ve_provided = (ve != NULL); WARN_ON_ONCE(!dst || (dst & ~VE_LOG_BOTH)); + if (!ve) + ve = get_exec_env(); + va_copy(args2, args); - if (ve_is_super(get_exec_env()) || (dst & VE0_LOG)) + if (ve_is_super(ve) || (dst & VE0_LOG)) r = vprintk_emit(0, LOGLEVEL_SCHED, NULL, fmt, args); /* Report IRQ usage here - printing to VE requires explicit ve reference */ - if ((dst & VE_LOG) && !WARN_ON_ONCE(!in_task()) && !ve_is_super(get_exec_env())) - r = ve_vprintk_emit(0, LOGLEVEL_SCHED, NULL, fmt, args2); + if ((dst & VE_LOG)) { + if (!ve_provided && WARN_ON_ONCE(!in_task())) + goto done; + if (!ve_is_super(ve)) + r = __ve_vprintk_emit(ve, 0, LOGLEVEL_SCHED, NULL, fmt, args2); + } +done: va_end(args2); return r; } -asmlinkage int ve_printk_deferred(int dst, const char *fmt, ...) +asmlinkage int ve_printk_deferred(int dst, struct ve_struct *ve, + const char *fmt, ...) { va_list args; int r; va_start(args, fmt); - r = ve_vprintk_deferred(dst, fmt, args); + r = ve_vprintk_deferred(dst, ve, fmt, args); va_end(args); return r; diff --git a/lib/ratelimit.c b/lib/ratelimit.c index 98409e870eea..98c45bb19e50 100644 --- a/lib/ratelimit.c +++ b/lib/ratelimit.c @@ -11,6 +11,7 @@ #include #include #include +#include /* * __ratelimit - rate limiting @@ -24,7 +25,7 @@ * 0 means callbacks will be suppressed. * 1 means go ahead and do it. */ -int __ve_ratelimit(int dst, struct ratelimit_state *rs, const char *func) +int __ve_ratelimit(int dst, struct ve_struct *ve, struct ratelimit_state *rs, const char *func) { /* Paired with WRITE_ONCE() in .proc_handler(). * Changing two values seperately could be inconsistent @@ -55,7 +56,7 @@ int __ve_ratelimit(int dst, struct ratelimit_state *rs, const char *func) if (m) { if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE)) { - ve_printk_deferred(dst, KERN_WARNING + ve_printk_deferred(dst, ve, KERN_WARNING "%s: %d callbacks suppressed\n", func, m); } } @@ -77,6 +78,6 @@ EXPORT_SYMBOL(__ve_ratelimit); int ___ratelimit(struct ratelimit_state *rs, const char *func) { - return __ve_ratelimit(VE0_LOG, rs, func); + return __ve_ratelimit(VE0_LOG, get_ve0(), rs, func); } EXPORT_SYMBOL(___ratelimit); diff --git a/net/core/utils.c b/net/core/utils.c index cffc3bc44baa..bf4e53205a8e 100644 --- a/net/core/utils.c +++ b/net/core/utils.c @@ -41,9 +41,9 @@ int net_ratelimit(void) } EXPORT_SYMBOL(net_ratelimit); -int ve_net_ratelimit(int dst) +int ve_net_ratelimit(int dst, struct ve_struct *ve) { - return ve_ratelimit(dst, &net_ratelimit_state); + return ve_ratelimit(dst, ve, &net_ratelimit_state); } EXPORT_SYMBOL(ve_net_ratelimit); diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index f078136edddd..8900a41b48b6 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -1701,7 +1701,7 @@ __nf_conntrack_alloc(struct net *net, if (!conntrack_gc_work.early_drop) conntrack_gc_work.early_drop = true; atomic_dec(&cnet->count); - net_veboth_ratelimited(KERN_WARNING "VE%s: " + net_veboth_ratelimited(net->owner_ve, KERN_WARNING "VE%s: " "nf_conntrack table full in netns %u, dropping packet\n", ve_name(net->owner_ve), net->ns.inum); return ERR_PTR(-ENOMEM); diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c index 4b077b2cb432..23e78957bb79 100644 --- a/net/netfilter/nf_conntrack_expect.c +++ b/net/netfilter/nf_conntrack_expect.c @@ -508,7 +508,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect, cnet = nf_ct_pernet(net); if (cnet->expect_count >= cnet->expect_max) { - net_veboth_ratelimited(KERN_WARNING "VE%s: " + net_veboth_ratelimited(net->owner_ve, KERN_WARNING "VE%s: " "nf_conntrack: expectation table full in netns %u\n", ve_name(net->owner_ve), net->ns.inum); ret = -EMFILE; diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS.c index 822b3f71570e..0b9ccc8987e2 100644 --- a/net/netfilter/xt_TCPMSS.c +++ b/net/netfilter/xt_TCPMSS.c @@ -105,8 +105,8 @@ tcpmss_mangle_packet(struct sk_buff *skb, unsigned int min_mtu = min(dst_mtu(skb_dst(skb)), in_mtu); if (min_mtu <= minlen) { - net_velog_ratelimited("unknown or invalid path-MTU (%u)\n", - min_mtu); + net_velog_ratelimited(net->owner_ve, "unknown or invalid path-MTU (%u)\n", + min_mtu); return -1; } newmss = min_mtu - minlen; -- 2.52.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel