The "gasket_dev->num_page_tables" variable is an int but this is copying sizeof(u64). On 32 bit systems this would end up disclosing a kernel pointer to user space, but on 64 bit it copies zeroes from a struct hole. Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- This is an API change. Please review this carefully! Another potential fix would be to make ->num_page_tables a long instead of an int. drivers/staging/gasket/gasket_ioctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/gasket/gasket_ioctl.c b/drivers/staging/gasket/gasket_ioctl.c index e3047d36d8db..c4abac35c1ca 100644 --- a/drivers/staging/gasket/gasket_ioctl.c +++ b/drivers/staging/gasket/gasket_ioctl.c @@ -318,7 +318,7 @@ long gasket_handle_ioctl(struct file *filp, uint cmd, void __user *argp) case GASKET_IOCTL_NUMBER_PAGE_TABLES: trace_gasket_ioctl_integer_data(gasket_dev->num_page_tables); if (copy_to_user(argp, &gasket_dev->num_page_tables, - sizeof(uint64_t))) + sizeof(gasket_dev->num_page_tables))) retval = -EFAULT; else retval = 0; -- 2.29.2