Commit c4739ea6 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Staging: heci: fix some sparse warnings

This resolves a lot of the more obvious sparse warnings in the code.

There still are some major problems in the ioctl handlers dealing with
user and kernel pointers that this patch does not resolve, that needs to
be addressed still.

Also, the locking seems to be a bit strange in places, which sparse
points out, that too need to be resolved.

Cc: Anas Nashif <anas.nashif@intel.com>
Cc: Marcin Obara <marcin.obara@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent bc154a38
...@@ -124,12 +124,12 @@ void heci_wd_timer(unsigned long data); ...@@ -124,12 +124,12 @@ void heci_wd_timer(unsigned long data);
* input output function prototype * input output function prototype
*/ */
int heci_ioctl_get_version(struct iamt_heci_device *dev, int if_num, int heci_ioctl_get_version(struct iamt_heci_device *dev, int if_num,
struct heci_message_data *u_msg, struct heci_message_data __user *u_msg,
struct heci_message_data k_msg, struct heci_message_data k_msg,
struct heci_file_private *file_ext); struct heci_file_private *file_ext);
int heci_ioctl_connect_client(struct iamt_heci_device *dev, int if_num, int heci_ioctl_connect_client(struct iamt_heci_device *dev, int if_num,
struct heci_message_data *u_msg, struct heci_message_data __user *u_msg,
struct heci_message_data k_msg, struct heci_message_data k_msg,
struct file *file); struct file *file);
...@@ -148,7 +148,7 @@ int pthi_write(struct iamt_heci_device *dev, ...@@ -148,7 +148,7 @@ int pthi_write(struct iamt_heci_device *dev,
struct heci_cb_private *priv_cb); struct heci_cb_private *priv_cb);
int pthi_read(struct iamt_heci_device *dev, int if_num, struct file *file, int pthi_read(struct iamt_heci_device *dev, int if_num, struct file *file,
char *ubuf, size_t length, loff_t *offset); char __user *ubuf, size_t length, loff_t *offset);
struct heci_cb_private *find_pthi_read_list_entry( struct heci_cb_private *find_pthi_read_list_entry(
struct iamt_heci_device *dev, struct iamt_heci_device *dev,
......
...@@ -428,7 +428,7 @@ struct iamt_heci_device { ...@@ -428,7 +428,7 @@ struct iamt_heci_device {
*/ */
unsigned int mem_base; unsigned int mem_base;
unsigned int mem_length; unsigned int mem_length;
char *mem_addr; void __iomem *mem_addr;
/* /*
* lock for the device * lock for the device
*/ */
......
...@@ -63,7 +63,7 @@ const __u8 heci_wd_state_independence_msg[3][4] = { ...@@ -63,7 +63,7 @@ const __u8 heci_wd_state_independence_msg[3][4] = {
{0x07, 0x02, 0x01, 0x10} {0x07, 0x02, 0x01, 0x10}
}; };
const struct guid heci_asf_guid = { static const struct guid heci_asf_guid = {
0x75B30CD6, 0xA29E, 0x4AF7, 0x75B30CD6, 0xA29E, 0x4AF7,
{0xA7, 0x12, 0xE6, 0x17, 0x43, 0x93, 0xC8, 0xA6} {0xA7, 0x12, 0xE6, 0x17, 0x43, 0x93, 0xC8, 0xA6}
}; };
......
...@@ -71,10 +71,10 @@ ...@@ -71,10 +71,10 @@
/* /*
* heci driver strings * heci driver strings
*/ */
char heci_driver_name[] = HECI_DRIVER_NAME; static char heci_driver_name[] = HECI_DRIVER_NAME;
char heci_driver_string[] = "Intel(R) Management Engine Interface"; static char heci_driver_string[] = "Intel(R) Management Engine Interface";
char heci_driver_version[] = HECI_DRIVER_VERSION; static char heci_driver_version[] = HECI_DRIVER_VERSION;
char heci_copyright[] = "Copyright (c) 2003 - 2008 Intel Corporation."; static char heci_copyright[] = "Copyright (c) 2003 - 2008 Intel Corporation.";
#ifdef HECI_DEBUG #ifdef HECI_DEBUG
...@@ -96,7 +96,7 @@ static int heci_major; ...@@ -96,7 +96,7 @@ static int heci_major;
/* The device pointer */ /* The device pointer */
static struct pci_dev *heci_device; static struct pci_dev *heci_device;
struct class *heci_class; static struct class *heci_class;
/* heci_pci_tbl - PCI Device ID Table */ /* heci_pci_tbl - PCI Device ID Table */
...@@ -1331,7 +1331,7 @@ static int heci_ioctl(struct inode *inode, struct file *file, ...@@ -1331,7 +1331,7 @@ static int heci_ioctl(struct inode *inode, struct file *file,
int if_num = iminor(inode); int if_num = iminor(inode);
struct heci_file_private *file_ext = file->private_data; struct heci_file_private *file_ext = file->private_data;
/* in user space */ /* in user space */
struct heci_message_data *u_msg = (struct heci_message_data *) data; struct heci_message_data __user *u_msg;
struct heci_message_data k_msg; /* all in kernel on the stack */ struct heci_message_data k_msg; /* all in kernel on the stack */
struct iamt_heci_device *dev; struct iamt_heci_device *dev;
...@@ -1353,6 +1353,7 @@ static int heci_ioctl(struct inode *inode, struct file *file, ...@@ -1353,6 +1353,7 @@ static int heci_ioctl(struct inode *inode, struct file *file,
spin_unlock_bh(&dev->device_lock); spin_unlock_bh(&dev->device_lock);
/* first copy from user all data needed */ /* first copy from user all data needed */
u_msg = (struct heci_message_data __user *)data;
if (copy_from_user(&k_msg, u_msg, sizeof(k_msg))) { if (copy_from_user(&k_msg, u_msg, sizeof(k_msg))) {
DBG("first copy from user all data needed filled\n"); DBG("first copy from user all data needed filled\n");
return -EFAULT; return -EFAULT;
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
* returns 0 on success, <0 on failure. * returns 0 on success, <0 on failure.
*/ */
int heci_ioctl_get_version(struct iamt_heci_device *dev, int if_num, int heci_ioctl_get_version(struct iamt_heci_device *dev, int if_num,
struct heci_message_data *u_msg, struct heci_message_data __user *u_msg,
struct heci_message_data k_msg, struct heci_message_data k_msg,
struct heci_file_private *file_ext) struct heci_file_private *file_ext)
{ {
...@@ -136,7 +136,7 @@ end: ...@@ -136,7 +136,7 @@ end:
* returns 0 on success, <0 on failure. * returns 0 on success, <0 on failure.
*/ */
int heci_ioctl_connect_client(struct iamt_heci_device *dev, int if_num, int heci_ioctl_connect_client(struct iamt_heci_device *dev, int if_num,
struct heci_message_data *u_msg, struct heci_message_data __user *u_msg,
struct heci_message_data k_msg, struct heci_message_data k_msg,
struct file *file) struct file *file)
{ {
...@@ -524,7 +524,7 @@ struct heci_cb_private *find_pthi_read_list_entry( ...@@ -524,7 +524,7 @@ struct heci_cb_private *find_pthi_read_list_entry(
* negative on failure. * negative on failure.
*/ */
int pthi_read(struct iamt_heci_device *dev, int if_num, struct file *file, int pthi_read(struct iamt_heci_device *dev, int if_num, struct file *file,
char *ubuf, size_t length, loff_t *offset) char __user *ubuf, size_t length, loff_t *offset)
{ {
int rets = 0; int rets = 0;
struct heci_cb_private *priv_cb = NULL; struct heci_cb_private *priv_cb = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment