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 9C5D980726 for ; Sun, 11 Oct 2026 22:54:18 +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 69BMr6gT009400; Mon, 12 Oct 2026 01:53:07 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69BMr6gT009400 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="S6PlRLl1" Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69BMqqC0009356 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Mon, 12 Oct 2026 01:52:52 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69BMqqC0009356 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-48c437ae7dbso520968f8f.1 for ; Sun, 11 Oct 2026 15:52:52 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBwpbdE8swZsowe84ifxOQx7avh799LF/TnhZT3eLyb4bf3YaavsDsru2qB7u8xQyoaOiJdvNg==@openvz.org X-Gm-Message-State: AFq9FYIvMCUUvAt5aVGwsRURvZA8dFI47Yd9x9siejotxqCNZqt2nMPl tqIpAjhIb7kWZuPJfn6gv9XsvyeOdJKTxK+oxoGodRKvPkQSwf5IBqiQqFd6Rw4MYM+pbT9GYRy waFPxGH/1wL90mKhMHuhF7DStBq0cpOFOI4Qr1Xfa0mdvQ5b71GxNDA== X-Gm-Gg: AYBFou3b0i3YOoR0fkmaCkGc+wNbkvAFHgPsl4bT+dSA5kNmFSzl6PJqvbPguTC5J2k au/dlCOpl1hgngFYyz43/Hg2OaWPC9mGKbBCdDlhcHsc3fwLFC823ncz7pG9qXGnRuH5vLaLmYK VJe0i3VNG0a0wzs4XPpcpXnkmn69Ysg4Ob67kbpf7+ibk+0xhuDSFmRXB6VWz+8A/7iKkw2fXDT QfF1Ny9TVLHLCqUxV9ji/rkNVF2FBsyJAVOfm9l9KSPEZy+Xxcc7UaRDxFLQ3SbU8Ya85mpMqr6 HNRUdMWKBr0K5QXU9++mY3Fb341wHjZHJr7yqZBZsAE6NgWeum/YInGNM+G2TD6qYpWATZFGO+y yFvsimizj03e8yo4L4b2owANJS0rtyw== X-Received: by 2002:a05:6000:4287:b0:48c:77ae:c39a with SMTP id ffacd0b85a97d-48db9475d10mr20246954f8f.15.1791759171808; Sun, 11 Oct 2026 15:52:51 -0700 (PDT) X-Received: by 2002:a05:6000:4287:b0:48c:77ae:c39a with SMTP id ffacd0b85a97d-48db9475d10mr20246923f8f.15.1791759171152; Sun, 11 Oct 2026 15:52:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791759171; cv=none; d=google.com; s=arc-20260327; b=EH8jwfzeCYbwZAgBEvJbBukc63+M0iq026q73+fyNfOYmdAgEN/JS6YxHcPW8nyvKD migiztkzYWMJQdACX51QJisyRf0M3S6iTnSxJRpYzjuyLqNbPMkLs7/tFU5PoSiqRZJO eCtneTXsYOgIJLHY8AJE6fZhoqpd6YbjTyavKhShUqwnebgRNuPCCAQwoZIe5ZGIwh0C pAKVIW8nyuVasVDAG+++72/KT15WLMacyiWYrvRDurFJwsMBtOdDz61nE8tmCwi2vu+t ZYCS5s+9k2RG0YLaWe5QiVNzeGuvWF0drQhIRWy993k02YtV0aEJKThxhUt15OhvPWiO dpmQ== 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=wiy5d04nOh9xCbDM7bETCdfZ4NaDO0UdG8YtueulgT4=; fh=eCOFrBZAqsL6jjT8ApulcBPCLrgIlXlNCEpSn7Ap5O8=; b=S5p5RXkXuEXT89WtCxBZeqE2RWptzcPZy3UcRA5sDBIvd5JeBpTEVf79dV8rOJE9wn DMD8CX9gecj/98uR6kHruNJSiIRN/FwLeYNXsFRFBaw0G0nj6P3FBYLvvS4VWDAcegok dz4Ray1ZJ4mmnfQCYuC1cJRiwZVjrPh6QjMFsUilU7LyLejIQoX3pfP+10I2xG73Em4U EAFsfAQm+/JNtdU6wkClAX9FLXWSX0uvs27HWwLQjLXYNEqUyUej+a0OpBX0heXUvu1L l9cNzLNPsNy2WijdwipuukFFWnXyoBt3AU44oBni8IKRtEHZ097LNvnnsJqLSmGV+eum Htxg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=S6PlRLl1; 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-48db9af1c34si15647704f8f.363.2026.10.11.15.52.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Oct 2026 15:52:51 -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=S6PlRLl1; 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=wiy5d04nOh9xCbDM7bETCdfZ4NaDO0UdG8YtueulgT4=; b=S6PlRLl1UgwtpxEu73H aFQNIIVfDQCEa7aHxQi58TJi1rbzyQ4U/tp/CgPEbO8gaDPIoKktQrjmnwawLoqF2yrzXintvNQHR yt6S684A5C2r8imJjojhN5t0kCSfeNOZgwey5cJVk4e30nQpYrKgj3a3H066VOAwzrrlHAKYoMzEy QABNlWmgqZTk1y2PiDlKAeQY25thMf3yq1gMnhbBUWiWUuxfgh5mjjDo4s0SVATXjEFuoqDSEy5Gf MCgmmeTvv304u63xLAzpuKTVAcu/ZF0MNhFNMb1jmsx1pTY0vsReNwCw8Yl58ncPoBh2rU2Hxm4vV 8fsZ7Vopt1IOycg==; 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 1xG2M5-002SCD-1G; Mon, 12 Oct 2026 00:52:43 +0200 From: Vladimir Riabchun Date: Mon, 12 Oct 2026 00:52:30 +0200 MIME-Version: 1.0 Message-Id: <20261012-ve-printk-irq-v3-3-efc95fd5c78a@virtuozzo.com> References: <20261012-ve-printk-irq-v3-0-efc95fd5c78a@virtuozzo.com> In-Reply-To: <20261012-ve-printk-irq-v3-0-efc95fd5c78a@virtuozzo.com> To: vasileios.almpanis@virtuozzo.com, ptikhomirov@virtuozzo.com, Konstantin Khorenko X-Mailer: b4 0.14.3 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v3 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 | 29 +++++++++++--- include/linux/ratelimit_types.h | 6 ++- kernel/printk/printk.c | 80 ++++++++++++++++++++++++++++++------- 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(+), 40 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..8428ad64ffa0 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,10 +177,12 @@ 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); void ve_log_destroy(struct ve_struct *ve); asmlinkage __printf(2, 3) __cold @@ -248,8 +256,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 +759,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..f0897de062a8 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,44 @@ 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 +2588,61 @@ 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