Do not use probe_kernel_address.
Actually, it is not safe on Norrin: this can lead to system crash.
Bug
200005974
Bug
1522252
Change-Id: If8bae9afd7c7e1bbb5beaf430c0c61f552aeb036
Signed-off-by: Igor Nabirushkin <inabirushkin@nvidia.com>
Reviewed-on: http://git-master/r/411507
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Daniel Horowitz <dhorowitz@nvidia.com>
Tested-by: Maxim Morin <mmorin@nvidia.com>
return 1;
}
-#define read_user_data(addr, retval) \
-({ \
- long ret; \
- ret = probe_kernel_address(addr, retval); \
- if (ret) \
- ret = -QUADD_URC_EACCESS; \
- ret; \
+/*
+ * TBD: why probe_kernel_address() can lead to random crashes
+ * on 64-bit kernel, and replacing it to __get_user() fixed the issue.
+ */
+#define read_user_data(addr, retval) \
+({ \
+ int ret; \
+ \
+ pagefault_disable(); \
+ ret = __get_user(retval, addr); \
+ pagefault_enable(); \
+ \
+ if (ret) { \
+ pr_debug("%s: failed for address: %p\n", \
+ __func__, addr); \
+ ret = -QUADD_URC_EACCESS; \
+ } \
+ \
+ ret; \
})
static inline long
#ifndef __QUADD_VERSION_H
#define __QUADD_VERSION_H
-#define QUADD_MODULE_VERSION "1.70"
+#define QUADD_MODULE_VERSION "1.71"
#define QUADD_MODULE_BRANCH "Dev"
#endif /* __QUADD_VERSION_H */