|
@@ -1411,7 +1411,9 @@ asmlinkage long compat_sys_get_mempolicy(int __user *policy,
|
|
|
err = sys_get_mempolicy(policy, nm, nr_bits+1, addr, flags);
|
|
|
|
|
|
if (!err && nmask) {
|
|
|
- err = copy_from_user(bm, nm, alloc_size);
|
|
|
+ unsigned long copy_size;
|
|
|
+ copy_size = min_t(unsigned long, sizeof(bm), alloc_size);
|
|
|
+ err = copy_from_user(bm, nm, copy_size);
|
|
|
/* ensure entire bitmap is zeroed */
|
|
|
err |= clear_user(nmask, ALIGN(maxnode-1, 8) / 8);
|
|
|
err |= compat_put_bitmap(nmask, bm, nr_bits);
|