Original patch commit message is about supressing excess kernel log messages, but it actually also changes device flag update logic, with it __dev_set_promiscuity updates dev->flags, but skips calling net_device_ops->ndo_change_rx_flags() callback effectively not informing the device about its flag change.
Let's only skip logging for (IFF_LOOPBACK | IFF_POINTOPOINT), but still call the device callback. https://virtuozzo.atlassian.net/browse/VSTOR-97985 Fixes: 202eb8960361 ("ve: Use ve_printk() for often kernel messages about user actions") [1] Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com> --- net/core/dev.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 14166754f7bf..fffed7680eaf 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8253,26 +8253,26 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify) return -EOVERFLOW; } } - /* - * Promiscous mode on LOOPBACK/POINTTOPOINT devices does - * not mean anything - */ - if ((dev->flags != old_flags) && - !(dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))) { - ve_printk(VE_LOG, KERN_INFO "device %s %s promiscuous mode\n", - dev->name, - dev->flags & IFF_PROMISC ? "entered" : "left"); - if (audit_enabled) { - current_uid_gid(&uid, &gid); - audit_log(audit_context(), GFP_ATOMIC, - AUDIT_ANOM_PROMISCUOUS, - "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u", - dev->name, (dev->flags & IFF_PROMISC), - (old_flags & IFF_PROMISC), - from_kuid(&init_user_ns, audit_get_loginuid(current)), - from_kuid(&init_user_ns, uid), - from_kgid(&init_user_ns, gid), - audit_get_sessionid(current)); + if (dev->flags != old_flags) { + /* + * Skip messages about promiscous mode on LOOPBACK/POINTTOPOINT devices. + */ + if (!(dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))) { + ve_printk(VE_LOG, KERN_INFO "device %s %s promiscuous mode\n", + dev->name, dev->flags & IFF_PROMISC ? + "entered" : "left"); + if (audit_enabled) { + current_uid_gid(&uid, &gid); + audit_log(audit_context(), GFP_ATOMIC, + AUDIT_ANOM_PROMISCUOUS, + "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u", + dev->name, (dev->flags & IFF_PROMISC), + (old_flags & IFF_PROMISC), + from_kuid(&init_user_ns, audit_get_loginuid(current)), + from_kuid(&init_user_ns, uid), + from_kgid(&init_user_ns, gid), + audit_get_sessionid(current)); + } } dev_change_rx_flags(dev, IFF_PROMISC); -- 2.49.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel