diff options
author | Ming Lei <ming.lei@canonical.com> | 2013-02-22 19:34:16 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-23 20:50:16 -0500 |
commit | 9802c8e22f6efd372e83d9d5d5ff43f3562cfe19 (patch) | |
tree | 27e8a625a9917153c290cb27e16de9db3086e6e5 /net | |
parent | 25e823c8c37d123b77ce12a042da889e6bb5f9d1 (diff) |
net/core: apply pm_runtime_set_memalloc_noio on network devices
Deadlock might be caused by allocating memory with GFP_KERNEL in
runtime_resume and runtime_suspend callback of network devices in iSCSI
situation, so mark network devices and its ancestor as 'memalloc_noio'
with the introduced pm_runtime_set_memalloc_noio().
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Decotigny <david.decotigny@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Oliver Neukum <oneukum@suse.de>
Cc: Jiri Kosina <jiri.kosina@suse.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/net-sysfs.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index a5b89a6fec6d..7427ab5e27d8 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/vmalloc.h> | 21 | #include <linux/vmalloc.h> |
22 | #include <linux/export.h> | 22 | #include <linux/export.h> |
23 | #include <linux/jiffies.h> | 23 | #include <linux/jiffies.h> |
24 | #include <linux/pm_runtime.h> | ||
24 | 25 | ||
25 | #include "net-sysfs.h" | 26 | #include "net-sysfs.h" |
26 | 27 | ||
@@ -1257,6 +1258,8 @@ void netdev_unregister_kobject(struct net_device * net) | |||
1257 | 1258 | ||
1258 | remove_queue_kobjects(net); | 1259 | remove_queue_kobjects(net); |
1259 | 1260 | ||
1261 | pm_runtime_set_memalloc_noio(dev, false); | ||
1262 | |||
1260 | device_del(dev); | 1263 | device_del(dev); |
1261 | } | 1264 | } |
1262 | 1265 | ||
@@ -1301,6 +1304,8 @@ int netdev_register_kobject(struct net_device *net) | |||
1301 | return error; | 1304 | return error; |
1302 | } | 1305 | } |
1303 | 1306 | ||
1307 | pm_runtime_set_memalloc_noio(dev, true); | ||
1308 | |||
1304 | return error; | 1309 | return error; |
1305 | } | 1310 | } |
1306 | 1311 | ||