summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch44
-rw-r--r--patches/ipv4/ipv4wait.scc1
2 files changed, 45 insertions, 0 deletions
diff --git a/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
new file mode 100644
index 0000000..5133075
--- /dev/null
+++ b/patches/ipv4/0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch
@@ -0,0 +1,44 @@
1From 1828e68d8f0b99dbe388de4b6703afd90fdd7493 Mon Sep 17 00:00:00 2001
2From: Dragos Motrea <Dragos.Motrea@enea.com>
3Date: Thu, 16 Mar 2017 14:04:17 +0100
4Subject: [PATCH] IPV4: unlock rtnl_mutex before waiting for carrier on
5
6There is a race condition between ip auto configuration and the ethernet
7driver. The ip configuration is taking the rtnl_mutex in the ic_open_devs()
8function and then is waiting 120 seconds for a carrier on at least
9one network device. The driver is locked in the mutex and the carrier on
10is not sent. After 120 seconds, the mutex is unlocked and the driver is
11continuing its task execution.
12
13The mutex should be unlocked in the ip auto configuration before waiting the
14carrier on from the ethernet driver.
15
16Signed-off-by: Dragos Motrea <Dragos.Motrea@enea.com>
17---
18 net/ipv4/ipconfig.c | 3 +--
19 1 file changed, 1 insertion(+), 2 deletions(-)
20
21diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
22index 071a785..55c95cc 100644
23--- a/net/ipv4/ipconfig.c
24+++ b/net/ipv4/ipconfig.c
25@@ -254,6 +254,7 @@ static int __init ic_open_devs(void)
26 dev->name, able, d->xid);
27 }
28 }
29+ rtnl_unlock();
30
31 /* no point in waiting if we could not bring up at least one device */
32 if (!ic_first_dev)
33@@ -281,8 +282,6 @@ static int __init ic_open_devs(void)
34 next_msg = jiffies + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
35 }
36 have_carrier:
37- rtnl_unlock();
38-
39 *last = NULL;
40
41 if (!ic_first_dev) {
42--
432.7.4
44
diff --git a/patches/ipv4/ipv4wait.scc b/patches/ipv4/ipv4wait.scc
new file mode 100644
index 0000000..93e8cdc
--- /dev/null
+++ b/patches/ipv4/ipv4wait.scc
@@ -0,0 +1 @@
patch 0001-IPV4-unlock-rtnl_mutex-before-waiting-for-carrier-on.patch