Commit d9de55ab authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] sparse: drivers/net/wan annotation

parent 1e73d434
...@@ -220,7 +220,8 @@ static int c101_close(struct net_device *dev) ...@@ -220,7 +220,8 @@ static int c101_close(struct net_device *dev)
static int c101_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) static int c101_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ {
const size_t size = sizeof(sync_serial_settings); const size_t size = sizeof(sync_serial_settings);
sync_serial_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.sync; sync_serial_settings new_line;
sync_serial_settings __user *line = ifr->ifr_settings.ifs_ifsu.sync;
port_t *port = dev_to_port(dev); port_t *port = dev_to_port(dev);
#ifdef DEBUG_RINGS #ifdef DEBUG_RINGS
......
...@@ -301,9 +301,9 @@ static char *chrdev_setup_rx(struct channel_data *channel, int size); ...@@ -301,9 +301,9 @@ static char *chrdev_setup_rx(struct channel_data *channel, int size);
static int chrdev_rx_done(struct channel_data *channel); static int chrdev_rx_done(struct channel_data *channel);
static int chrdev_tx_done(struct channel_data *channel, int size); static int chrdev_tx_done(struct channel_data *channel, int size);
static ssize_t cosa_read(struct file *file, static ssize_t cosa_read(struct file *file,
char *buf, size_t count, loff_t *ppos); char __user *buf, size_t count, loff_t *ppos);
static ssize_t cosa_write(struct file *file, static ssize_t cosa_write(struct file *file,
const char *buf, size_t count, loff_t *ppos); const char __user *buf, size_t count, loff_t *ppos);
static unsigned int cosa_poll(struct file *file, poll_table *poll); static unsigned int cosa_poll(struct file *file, poll_table *poll);
static int cosa_open(struct inode *inode, struct file *file); static int cosa_open(struct inode *inode, struct file *file);
static int cosa_release(struct inode *inode, struct file *file); static int cosa_release(struct inode *inode, struct file *file);
...@@ -330,13 +330,13 @@ static struct file_operations cosa_fops = { ...@@ -330,13 +330,13 @@ static struct file_operations cosa_fops = {
/* Ioctls */ /* Ioctls */
static int cosa_start(struct cosa_data *cosa, int address); static int cosa_start(struct cosa_data *cosa, int address);
static int cosa_reset(struct cosa_data *cosa); static int cosa_reset(struct cosa_data *cosa);
static int cosa_download(struct cosa_data *cosa, unsigned long a); static int cosa_download(struct cosa_data *cosa, void __user *a);
static int cosa_readmem(struct cosa_data *cosa, unsigned long a); static int cosa_readmem(struct cosa_data *cosa, void __user *a);
/* COSA/SRP ROM monitor */ /* COSA/SRP ROM monitor */
static int download(struct cosa_data *cosa, const char *data, int addr, int len); static int download(struct cosa_data *cosa, const char __user *data, int addr, int len);
static int startmicrocode(struct cosa_data *cosa, int address); static int startmicrocode(struct cosa_data *cosa, int address);
static int readmem(struct cosa_data *cosa, char *data, int addr, int len); static int readmem(struct cosa_data *cosa, char __user *data, int addr, int len);
static int cosa_reset_and_read_id(struct cosa_data *cosa, char *id); static int cosa_reset_and_read_id(struct cosa_data *cosa, char *id);
/* Auxilliary functions */ /* Auxilliary functions */
...@@ -830,7 +830,7 @@ static void chardev_channel_init(struct channel_data *chan) ...@@ -830,7 +830,7 @@ static void chardev_channel_init(struct channel_data *chan)
} }
static ssize_t cosa_read(struct file *file, static ssize_t cosa_read(struct file *file,
char *buf, size_t count, loff_t *ppos) char __user *buf, size_t count, loff_t *ppos)
{ {
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
unsigned long flags; unsigned long flags;
...@@ -905,7 +905,7 @@ static int chrdev_rx_done(struct channel_data *chan) ...@@ -905,7 +905,7 @@ static int chrdev_rx_done(struct channel_data *chan)
static ssize_t cosa_write(struct file *file, static ssize_t cosa_write(struct file *file,
const char *buf, size_t count, loff_t *ppos) const char __user *buf, size_t count, loff_t *ppos)
{ {
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
struct channel_data *chan = file->private_data; struct channel_data *chan = file->private_data;
...@@ -1066,7 +1066,7 @@ static inline int cosa_reset(struct cosa_data *cosa) ...@@ -1066,7 +1066,7 @@ static inline int cosa_reset(struct cosa_data *cosa)
} }
/* High-level function to download data into COSA memory. Calls download() */ /* High-level function to download data into COSA memory. Calls download() */
static inline int cosa_download(struct cosa_data *cosa, unsigned long arg) static inline int cosa_download(struct cosa_data *cosa, void __user *arg)
{ {
struct cosa_download d; struct cosa_download d;
int i; int i;
...@@ -1080,7 +1080,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg) ...@@ -1080,7 +1080,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg)
return -EPERM; return -EPERM;
} }
if (copy_from_user(&d, (void __user *) arg, sizeof(d))) if (copy_from_user(&d, arg, sizeof(d)))
return -EFAULT; return -EFAULT;
if (d.addr < 0 || d.addr > COSA_MAX_FIRMWARE_SIZE) if (d.addr < 0 || d.addr > COSA_MAX_FIRMWARE_SIZE)
...@@ -1105,7 +1105,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg) ...@@ -1105,7 +1105,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg)
} }
/* High-level function to read COSA memory. Calls readmem() */ /* High-level function to read COSA memory. Calls readmem() */
static inline int cosa_readmem(struct cosa_data *cosa, unsigned long arg) static inline int cosa_readmem(struct cosa_data *cosa, void __user *arg)
{ {
struct cosa_download d; struct cosa_download d;
int i; int i;
...@@ -1120,7 +1120,7 @@ static inline int cosa_readmem(struct cosa_data *cosa, unsigned long arg) ...@@ -1120,7 +1120,7 @@ static inline int cosa_readmem(struct cosa_data *cosa, unsigned long arg)
return -EPERM; return -EPERM;
} }
if (copy_from_user(&d, (void __user *) arg, sizeof(d))) if (copy_from_user(&d, arg, sizeof(d)))
return -EFAULT; return -EFAULT;
/* If something fails, force the user to reset the card */ /* If something fails, force the user to reset the card */
...@@ -1167,7 +1167,7 @@ static inline int cosa_start(struct cosa_data *cosa, int address) ...@@ -1167,7 +1167,7 @@ static inline int cosa_start(struct cosa_data *cosa, int address)
} }
/* Buffer of size at least COSA_MAX_ID_STRING is expected */ /* Buffer of size at least COSA_MAX_ID_STRING is expected */
static inline int cosa_getidstr(struct cosa_data *cosa, char *string) static inline int cosa_getidstr(struct cosa_data *cosa, char __user *string)
{ {
int l = strlen(cosa->id_string)+1; int l = strlen(cosa->id_string)+1;
if (copy_to_user(string, cosa->id_string, l)) if (copy_to_user(string, cosa->id_string, l))
...@@ -1176,7 +1176,7 @@ static inline int cosa_getidstr(struct cosa_data *cosa, char *string) ...@@ -1176,7 +1176,7 @@ static inline int cosa_getidstr(struct cosa_data *cosa, char *string)
} }
/* Buffer of size at least COSA_MAX_ID_STRING is expected */ /* Buffer of size at least COSA_MAX_ID_STRING is expected */
static inline int cosa_gettype(struct cosa_data *cosa, char *string) static inline int cosa_gettype(struct cosa_data *cosa, char __user *string)
{ {
int l = strlen(cosa->type)+1; int l = strlen(cosa->type)+1;
if (copy_to_user(string, cosa->type, l)) if (copy_to_user(string, cosa->type, l))
...@@ -1187,6 +1187,7 @@ static inline int cosa_gettype(struct cosa_data *cosa, char *string) ...@@ -1187,6 +1187,7 @@ static inline int cosa_gettype(struct cosa_data *cosa, char *string)
static int cosa_ioctl_common(struct cosa_data *cosa, static int cosa_ioctl_common(struct cosa_data *cosa,
struct channel_data *channel, unsigned int cmd, unsigned long arg) struct channel_data *channel, unsigned int cmd, unsigned long arg)
{ {
void __user *argp = (void __user *)arg;
switch(cmd) { switch(cmd) {
case COSAIORSET: /* Reset the device */ case COSAIORSET: /* Reset the device */
if (!capable(CAP_NET_ADMIN)) if (!capable(CAP_NET_ADMIN))
...@@ -1200,15 +1201,15 @@ static int cosa_ioctl_common(struct cosa_data *cosa, ...@@ -1200,15 +1201,15 @@ static int cosa_ioctl_common(struct cosa_data *cosa,
if (!capable(CAP_SYS_RAWIO)) if (!capable(CAP_SYS_RAWIO))
return -EACCES; return -EACCES;
return cosa_download(cosa, arg); return cosa_download(cosa, argp);
case COSAIORMEM: case COSAIORMEM:
if (!capable(CAP_SYS_RAWIO)) if (!capable(CAP_SYS_RAWIO))
return -EACCES; return -EACCES;
return cosa_readmem(cosa, arg); return cosa_readmem(cosa, argp);
case COSAIORTYPE: case COSAIORTYPE:
return cosa_gettype(cosa, (char *)arg); return cosa_gettype(cosa, argp);
case COSAIORIDSTR: case COSAIORIDSTR:
return cosa_getidstr(cosa, (char *)arg); return cosa_getidstr(cosa, argp);
case COSAIONRCARDS: case COSAIONRCARDS:
return nr_cards; return nr_cards;
case COSAIONRCHANS: case COSAIONRCHANS:
...@@ -1434,7 +1435,7 @@ static int cosa_dma_able(struct channel_data *chan, char *buf, int len) ...@@ -1434,7 +1435,7 @@ static int cosa_dma_able(struct channel_data *chan, char *buf, int len)
* by a single space. Monitor has to reply with a space. Now the download * by a single space. Monitor has to reply with a space. Now the download
* begins. After the download monitor replies with "\r\n." (CR LF dot). * begins. After the download monitor replies with "\r\n." (CR LF dot).
*/ */
static int download(struct cosa_data *cosa, const char *microcode, int length, int address) static int download(struct cosa_data *cosa, const char __user *microcode, int length, int address)
{ {
int i; int i;
...@@ -1508,7 +1509,7 @@ static int startmicrocode(struct cosa_data *cosa, int address) ...@@ -1508,7 +1509,7 @@ static int startmicrocode(struct cosa_data *cosa, int address)
* This routine is not needed during the normal operation and serves * This routine is not needed during the normal operation and serves
* for debugging purposes only. * for debugging purposes only.
*/ */
static int readmem(struct cosa_data *cosa, char *microcode, int length, int address) static int readmem(struct cosa_data *cosa, char __user *microcode, int length, int address)
{ {
if (put_wait_data(cosa, 'r') == -1) return -1; if (put_wait_data(cosa, 'r') == -1) return -1;
if ((get_wait_data(cosa)) != 'r') return -2; if ((get_wait_data(cosa)) != 'r') return -2;
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
/* ioctls */ /* ioctls */
struct cosa_download { struct cosa_download {
int addr, len; int addr, len;
char *code; char __user *code;
}; };
/* Reset the device */ /* Reset the device */
......
...@@ -1296,7 +1296,7 @@ static int dscc4_set_clock(struct net_device *dev, u32 *bps, u32 *state) ...@@ -1296,7 +1296,7 @@ static int dscc4_set_clock(struct net_device *dev, u32 *bps, u32 *state)
static int dscc4_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) static int dscc4_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ {
sync_serial_settings *line = ifr->ifr_settings.ifs_ifsu.sync; sync_serial_settings __user *line = ifr->ifr_settings.ifs_ifsu.sync;
struct dscc4_dev_priv *dpriv = dscc4_priv(dev); struct dscc4_dev_priv *dpriv = dscc4_priv(dev);
const size_t size = sizeof(dpriv->settings); const size_t size = sizeof(dpriv->settings);
int ret = 0; int ret = 0;
......
...@@ -272,7 +272,7 @@ static void cisco_stop(struct net_device *dev) ...@@ -272,7 +272,7 @@ static void cisco_stop(struct net_device *dev)
int hdlc_cisco_ioctl(struct net_device *dev, struct ifreq *ifr) int hdlc_cisco_ioctl(struct net_device *dev, struct ifreq *ifr)
{ {
cisco_proto *cisco_s = ifr->ifr_settings.ifs_ifsu.cisco; cisco_proto __user *cisco_s = ifr->ifr_settings.ifs_ifsu.cisco;
const size_t size = sizeof(cisco_proto); const size_t size = sizeof(cisco_proto);
cisco_proto new_settings; cisco_proto new_settings;
hdlc_device *hdlc = dev_to_hdlc(dev); hdlc_device *hdlc = dev_to_hdlc(dev);
......
...@@ -1137,7 +1137,7 @@ static void fr_destroy(hdlc_device *hdlc) ...@@ -1137,7 +1137,7 @@ static void fr_destroy(hdlc_device *hdlc)
int hdlc_fr_ioctl(struct net_device *dev, struct ifreq *ifr) int hdlc_fr_ioctl(struct net_device *dev, struct ifreq *ifr)
{ {
fr_proto *fr_s = ifr->ifr_settings.ifs_ifsu.fr; fr_proto __user *fr_s = ifr->ifr_settings.ifs_ifsu.fr;
const size_t size = sizeof(fr_proto); const size_t size = sizeof(fr_proto);
fr_proto new_settings; fr_proto new_settings;
hdlc_device *hdlc = dev_to_hdlc(dev); hdlc_device *hdlc = dev_to_hdlc(dev);
......
...@@ -34,7 +34,7 @@ static unsigned short raw_type_trans(struct sk_buff *skb, ...@@ -34,7 +34,7 @@ static unsigned short raw_type_trans(struct sk_buff *skb,
int hdlc_raw_ioctl(struct net_device *dev, struct ifreq *ifr) int hdlc_raw_ioctl(struct net_device *dev, struct ifreq *ifr)
{ {
raw_hdlc_proto *raw_s = ifr->ifr_settings.ifs_ifsu.raw_hdlc; raw_hdlc_proto __user *raw_s = ifr->ifr_settings.ifs_ifsu.raw_hdlc;
const size_t size = sizeof(raw_hdlc_proto); const size_t size = sizeof(raw_hdlc_proto);
raw_hdlc_proto new_settings; raw_hdlc_proto new_settings;
hdlc_device *hdlc = dev_to_hdlc(dev); hdlc_device *hdlc = dev_to_hdlc(dev);
......
...@@ -46,7 +46,7 @@ static int eth_tx(struct sk_buff *skb, struct net_device *dev) ...@@ -46,7 +46,7 @@ static int eth_tx(struct sk_buff *skb, struct net_device *dev)
int hdlc_raw_eth_ioctl(struct net_device *dev, struct ifreq *ifr) int hdlc_raw_eth_ioctl(struct net_device *dev, struct ifreq *ifr)
{ {
raw_hdlc_proto *raw_s = ifr->ifr_settings.ifs_ifsu.raw_hdlc; raw_hdlc_proto __user *raw_s = ifr->ifr_settings.ifs_ifsu.raw_hdlc;
const size_t size = sizeof(raw_hdlc_proto); const size_t size = sizeof(raw_hdlc_proto);
raw_hdlc_proto new_settings; raw_hdlc_proto new_settings;
hdlc_device *hdlc = dev_to_hdlc(dev); hdlc_device *hdlc = dev_to_hdlc(dev);
......
...@@ -234,7 +234,7 @@ typedef struct lmc_st1f_control { ...@@ -234,7 +234,7 @@ typedef struct lmc_st1f_control {
int command; int command;
int address; int address;
int value; int value;
char *data; char __user *data;
} lmc_t1f_control; } lmc_t1f_control;
enum lmc_xilinx_c { enum lmc_xilinx_c {
...@@ -246,7 +246,7 @@ enum lmc_xilinx_c { ...@@ -246,7 +246,7 @@ enum lmc_xilinx_c {
struct lmc_xilinx_control { struct lmc_xilinx_control {
enum lmc_xilinx_c command; enum lmc_xilinx_c command;
int len; int len;
char *data; char __user *data;
}; };
/* ------------------ end T1 defs ------------------- */ /* ------------------ end T1 defs ------------------- */
......
...@@ -254,7 +254,8 @@ static int n2_close(struct net_device *dev) ...@@ -254,7 +254,8 @@ static int n2_close(struct net_device *dev)
static int n2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) static int n2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ {
const size_t size = sizeof(sync_serial_settings); const size_t size = sizeof(sync_serial_settings);
sync_serial_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.sync; sync_serial_settings new_line;
sync_serial_settings __user *line = ifr->ifr_settings.ifs_ifsu.sync;
port_t *port = dev_to_port(dev); port_t *port = dev_to_port(dev);
#ifdef DEBUG_RINGS #ifdef DEBUG_RINGS
......
...@@ -204,7 +204,8 @@ static int pci200_close(struct net_device *dev) ...@@ -204,7 +204,8 @@ static int pci200_close(struct net_device *dev)
static int pci200_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) static int pci200_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ {
const size_t size = sizeof(sync_serial_settings); const size_t size = sizeof(sync_serial_settings);
sync_serial_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.sync; sync_serial_settings new_line;
sync_serial_settings __user *line = ifr->ifr_settings.ifs_ifsu.sync;
port_t *port = dev_to_port(dev); port_t *port = dev_to_port(dev);
#ifdef DEBUG_RINGS #ifdef DEBUG_RINGS
......
...@@ -733,7 +733,7 @@ static int x25_asy_ioctl(struct tty_struct *tty, struct file *file, ...@@ -733,7 +733,7 @@ static int x25_asy_ioctl(struct tty_struct *tty, struct file *file,
switch(cmd) { switch(cmd) {
case SIOCGIFNAME: case SIOCGIFNAME:
if (copy_to_user((void *)arg, sl->dev->name, if (copy_to_user((void __user *)arg, sl->dev->name,
strlen(sl->dev->name) + 1)) strlen(sl->dev->name) + 1))
return -EFAULT; return -EFAULT;
return 0; return 0;
......
...@@ -108,15 +108,15 @@ struct if_settings ...@@ -108,15 +108,15 @@ struct if_settings
unsigned int size; /* Size of the data allocated by the caller */ unsigned int size; /* Size of the data allocated by the caller */
union { union {
/* {atm/eth/dsl}_settings anyone ? */ /* {atm/eth/dsl}_settings anyone ? */
raw_hdlc_proto *raw_hdlc; raw_hdlc_proto __user *raw_hdlc;
cisco_proto *cisco; cisco_proto __user *cisco;
fr_proto *fr; fr_proto __user *fr;
fr_proto_pvc *fr_pvc; fr_proto_pvc __user *fr_pvc;
fr_proto_pvc_info *fr_pvc_info; fr_proto_pvc_info __user *fr_pvc_info;
/* interface settings */ /* interface settings */
sync_serial_settings *sync; sync_serial_settings __user *sync;
te1_settings *te1; te1_settings __user *te1;
} ifs_ifsu; } ifs_ifsu;
}; };
......
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