diff options
Diffstat (limited to 'drivers/net/wireless/cisco/airo.c')
| -rw-r--r-- | drivers/net/wireless/cisco/airo.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/cisco/airo.c b/drivers/net/wireless/cisco/airo.c index 9342ffbe1e81..f43c06569ea1 100644 --- a/drivers/net/wireless/cisco/airo.c +++ b/drivers/net/wireless/cisco/airo.c @@ -5441,11 +5441,18 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {  			Cmd cmd;  			Resp rsp; -			if (ai->flags & FLAG_RADIO_MASK) return -ENETDOWN; +			if (ai->flags & FLAG_RADIO_MASK) { +				kfree(data->rbuffer); +				kfree(file->private_data); +				return -ENETDOWN; +			}  			memset(&cmd, 0, sizeof(cmd));  			cmd.cmd=CMD_LISTBSS; -			if (down_interruptible(&ai->sem)) +			if (down_interruptible(&ai->sem)) { +				kfree(data->rbuffer); +				kfree(file->private_data);  				return -ERESTARTSYS; +			}  			issuecommand(ai, &cmd, &rsp);  			up(&ai->sem);  			data->readlen = 0;  |