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 | } |
