X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fmaccess.c;h=ac40796cfb15b8d41d1b0e5f45cd093c31bf7da2;hb=75312619e8cd47265da210189cca57ab09640b18;hp=24f81b971403a221d64158bfba16687deb2e39a0;hpb=c33fa9f5609e918824446ef9a75319d4a802f1f4;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/maccess.c b/mm/maccess.c index 24f81b9..ac40796 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -17,11 +17,14 @@ long probe_kernel_read(void *dst, void *src, size_t size) { long ret; + mm_segment_t old_fs = get_fs(); + set_fs(KERNEL_DS); pagefault_disable(); ret = __copy_from_user_inatomic(dst, (__force const void __user *)src, size); pagefault_enable(); + set_fs(old_fs); return ret ? -EFAULT : 0; } @@ -39,10 +42,13 @@ EXPORT_SYMBOL_GPL(probe_kernel_read); long probe_kernel_write(void *dst, void *src, size_t size) { long ret; + mm_segment_t old_fs = get_fs(); + set_fs(KERNEL_DS); pagefault_disable(); ret = __copy_to_user_inatomic((__force void __user *)dst, src, size); pagefault_enable(); + set_fs(old_fs); return ret ? -EFAULT : 0; }