Re: "tuntap: multiqueue support" causes udev fork bombs
From: Jiri Slaby <hidden>
Date: 2012-11-30 17:01:40
Also in:
lkml
On 11/29/2012 06:47 AM, Jason Wang wrote:
On Wednesday, November 28, 2012 11:25:41 AM Jiri Slaby wrote:quoted
Hi, with this commit: commit c8d68e6be1c3b242f1c598595830890b65cea64a Author: Jason Wang [off-list ref] Date: Wed Oct 31 19:46:00 2012 +0000 tuntap: multiqueue support I see fork bombs from udev. It is trying to create 2048 processes. 1024 for tx, 1024 for rx. OOM killer indeed steps in and kills everything.Hi, thanks for the reporting, could you pls try the following patch?
Hi, it is gone with this patch.
quoted hunk ↗ jump to hunk
---diff --git a/drivers/net/tun.c b/drivers/net/tun.c index b44d7b7..cc3f878 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c@@ -492,9 +492,6 @@ static int tun_attach(struct tun_struct *tun, struct file *file) tun_set_real_num_queues(tun); - if (tun->numqueues == 1) - netif_carrier_on(tun->dev); - /* device is allowed to go away first, so no need to hold extra * refcnt. */@@ -1611,6 +1608,10 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) TUN_USER_FEATURES; dev->features = dev->hw_features; + err = tun_attach(tun, file); + if (err < 0) + goto err_free_dev; + err = register_netdevice(tun->dev); if (err < 0) goto err_free_dev;@@ -1620,9 +1621,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) device_create_file(&tun->dev->dev, &dev_attr_group)) pr_err("Failed to create tun sysfs files\n"); - err = tun_attach(tun, file); - if (err < 0) - goto err_free_dev; + netif_carrier_on(tun->dev); } tun_debug(KERN_INFO, tun, "tun_set_iff\n");
-- js suse labs