diff options
Diffstat (limited to 'mm/pdflush.c')
-rw-r--r-- | mm/pdflush.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/mm/pdflush.c b/mm/pdflush.c index a0a14c4d5072..15de509b68fd 100644 --- a/mm/pdflush.c +++ b/mm/pdflush.c | |||
@@ -172,7 +172,16 @@ static int __pdflush(struct pdflush_work *my_work) | |||
172 | static int pdflush(void *dummy) | 172 | static int pdflush(void *dummy) |
173 | { | 173 | { |
174 | struct pdflush_work my_work; | 174 | struct pdflush_work my_work; |
175 | cpumask_t cpus_allowed; | 175 | cpumask_var_t cpus_allowed; |
176 | |||
177 | /* | ||
178 | * Since the caller doesn't even check kthread_run() worked, let's not | ||
179 | * freak out too much if this fails. | ||
180 | */ | ||
181 | if (!alloc_cpumask_var(&cpus_allowed, GFP_KERNEL)) { | ||
182 | printk(KERN_WARNING "pdflush failed to allocate cpumask\n"); | ||
183 | return 0; | ||
184 | } | ||
176 | 185 | ||
177 | /* | 186 | /* |
178 | * pdflush can spend a lot of time doing encryption via dm-crypt. We | 187 | * pdflush can spend a lot of time doing encryption via dm-crypt. We |
@@ -187,8 +196,9 @@ static int pdflush(void *dummy) | |||
187 | * This is needed as pdflush's are dynamically created and destroyed. | 196 | * This is needed as pdflush's are dynamically created and destroyed. |
188 | * The boottime pdflush's are easily placed w/o these 2 lines. | 197 | * The boottime pdflush's are easily placed w/o these 2 lines. |
189 | */ | 198 | */ |
190 | cpuset_cpus_allowed(current, &cpus_allowed); | 199 | cpuset_cpus_allowed(current, cpus_allowed); |
191 | set_cpus_allowed_ptr(current, &cpus_allowed); | 200 | set_cpus_allowed_ptr(current, cpus_allowed); |
201 | free_cpumask_var(cpus_allowed); | ||
192 | 202 | ||
193 | return __pdflush(&my_work); | 203 | return __pdflush(&my_work); |
194 | } | 204 | } |