forked from MIrrors/gasket-driver
staging: gasket: top ioctl handler add __user annotations
Add __user annotation to gasket_core top-level ioctl handling pointer arguments, for sparse checking. Reported-by: Dmitry Torokhov <dtor@chromium.org> Signed-off-by: Zhongze Hu <frankhu@chromium.org> Signed-off-by: Todd Poynor <toddpoynor@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Alex Van Damme
parent
c4e2ac2703
commit
73e7d5fac5
@@ -14,6 +14,7 @@
|
||||
#include "gasket_page_table.h"
|
||||
#include "gasket_sysfs.h"
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/init.h>
|
||||
@@ -1791,6 +1792,7 @@ static long gasket_ioctl(struct file *filp, uint cmd, ulong arg)
|
||||
{
|
||||
struct gasket_dev *gasket_dev;
|
||||
const struct gasket_driver_desc *driver_desc;
|
||||
void __user *argp = (void __user *)arg;
|
||||
char path[256];
|
||||
|
||||
if (!filp)
|
||||
@@ -1820,14 +1822,14 @@ static long gasket_ioctl(struct file *filp, uint cmd, ulong arg)
|
||||
* check_and_invoke_callback.
|
||||
*/
|
||||
if (driver_desc->ioctl_handler_cb)
|
||||
return driver_desc->ioctl_handler_cb(filp, cmd, arg);
|
||||
return driver_desc->ioctl_handler_cb(filp, cmd, argp);
|
||||
|
||||
gasket_log_error(
|
||||
gasket_dev, "Received unknown ioctl 0x%x", cmd);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return gasket_handle_ioctl(filp, cmd, arg);
|
||||
return gasket_handle_ioctl(filp, cmd, argp);
|
||||
}
|
||||
|
||||
int gasket_reset(struct gasket_dev *gasket_dev, uint reset_type)
|
||||
|
||||
@@ -314,9 +314,12 @@ struct gasket_dev {
|
||||
struct hlist_node legacy_hlist_node;
|
||||
};
|
||||
|
||||
/* Type of the ioctl handler callback. */
|
||||
typedef long (*gasket_ioctl_handler_cb_t)
|
||||
(struct file *file, uint cmd, void __user *argp);
|
||||
/* Type of the ioctl permissions check callback. See below. */
|
||||
typedef int (*gasket_ioctl_permissions_cb_t)(
|
||||
struct file *filp, uint cmd, ulong arg);
|
||||
struct file *filp, uint cmd, void __user *argp);
|
||||
|
||||
/*
|
||||
* Device type descriptor.
|
||||
@@ -550,7 +553,7 @@ struct gasket_driver_desc {
|
||||
* return -EINVAL. Should return an error status (either -EINVAL or
|
||||
* the error result of the ioctl being handled).
|
||||
*/
|
||||
long (*ioctl_handler_cb)(struct file *filp, uint cmd, ulong arg);
|
||||
gasket_ioctl_handler_cb_t ioctl_handler_cb;
|
||||
|
||||
/*
|
||||
* device_status_cb: Callback to determine device health.
|
||||
|
||||
Reference in New Issue
Block a user