]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/vmscan.c
memory hotplug: fix invalid memory access caused by stale kswapd pointer
[karo-tx-linux.git] / mm / vmscan.c
index eeb3bc9d1d361b6f20821073485f1b8e7c4931d3..661576324c7f52ead9d5eaf6b3619498c1047336 100644 (file)
@@ -2955,14 +2955,17 @@ int kswapd_run(int nid)
 }
 
 /*
- * Called by memory hotplug when all memory in a node is offlined.
+ * Called by memory hotplug when all memory in a node is offlined.  Caller must
+ * hold lock_memory_hotplug().
  */
 void kswapd_stop(int nid)
 {
        struct task_struct *kswapd = NODE_DATA(nid)->kswapd;
 
-       if (kswapd)
+       if (kswapd) {
                kthread_stop(kswapd);
+               NODE_DATA(nid)->kswapd = NULL;
+       }
 }
 
 static int __init kswapd_init(void)