|
@@ -2958,6 +2958,8 @@ static void dev_change_rx_flags(struct net_device *dev, int flags)
|
|
static int __dev_set_promiscuity(struct net_device *dev, int inc)
|
|
static int __dev_set_promiscuity(struct net_device *dev, int inc)
|
|
{
|
|
{
|
|
unsigned short old_flags = dev->flags;
|
|
unsigned short old_flags = dev->flags;
|
|
|
|
+ uid_t uid;
|
|
|
|
+ gid_t gid;
|
|
|
|
|
|
ASSERT_RTNL();
|
|
ASSERT_RTNL();
|
|
|
|
|
|
@@ -2982,15 +2984,17 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc)
|
|
printk(KERN_INFO "device %s %s promiscuous mode\n",
|
|
printk(KERN_INFO "device %s %s promiscuous mode\n",
|
|
dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
|
|
dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
|
|
"left");
|
|
"left");
|
|
- if (audit_enabled)
|
|
|
|
|
|
+ if (audit_enabled) {
|
|
|
|
+ current_uid_gid(&uid, &gid);
|
|
audit_log(current->audit_context, GFP_ATOMIC,
|
|
audit_log(current->audit_context, GFP_ATOMIC,
|
|
AUDIT_ANOM_PROMISCUOUS,
|
|
AUDIT_ANOM_PROMISCUOUS,
|
|
"dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
|
|
"dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
|
|
dev->name, (dev->flags & IFF_PROMISC),
|
|
dev->name, (dev->flags & IFF_PROMISC),
|
|
(old_flags & IFF_PROMISC),
|
|
(old_flags & IFF_PROMISC),
|
|
audit_get_loginuid(current),
|
|
audit_get_loginuid(current),
|
|
- current->uid, current->gid,
|
|
|
|
|
|
+ uid, gid,
|
|
audit_get_sessionid(current));
|
|
audit_get_sessionid(current));
|
|
|
|
+ }
|
|
|
|
|
|
dev_change_rx_flags(dev, IFF_PROMISC);
|
|
dev_change_rx_flags(dev, IFF_PROMISC);
|
|
}
|
|
}
|