diff options
| author | David S. Miller <davem@davemloft.net> | 2011-05-05 14:09:28 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-05-05 14:09:28 -0700 | 
| commit | 90864fbc7639d7a2300c67a18c9fb9fbcf7d51d2 (patch) | |
| tree | 6951c8d0e529dbfc7c4cec75d4cec63350e39b7c /drivers/net/wireless/rt2x00/rt2x00usb.c | |
| parent | 228e548e602061b08ee8e8966f567c12aa079682 (diff) | |
| parent | a70171dce9cd44cb06c7d299eba9fa87a8933045 (diff) | |
| download | olio-linux-3.10-90864fbc7639d7a2300c67a18c9fb9fbcf7d51d2.tar.xz olio-linux-3.10-90864fbc7639d7a2300c67a18c9fb9fbcf7d51d2.zip  | |
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00usb.c')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index cb208d589ff..39e1052123e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c @@ -170,19 +170,22 @@ struct rt2x00_async_read_data {  	__le32 reg;  	struct usb_ctrlrequest cr;  	struct rt2x00_dev *rt2x00dev; -	void (*callback)(struct rt2x00_dev *,int,u32); +	bool (*callback)(struct rt2x00_dev *, int, u32);  };  static void rt2x00usb_register_read_async_cb(struct urb *urb)  {  	struct rt2x00_async_read_data *rd = urb->context; -	rd->callback(rd->rt2x00dev, urb->status, le32_to_cpu(rd->reg)); -	kfree(urb->context); +	if (rd->callback(rd->rt2x00dev, urb->status, le32_to_cpu(rd->reg))) { +		if (usb_submit_urb(urb, GFP_ATOMIC) < 0) +			kfree(rd); +	} else +		kfree(rd);  }  void rt2x00usb_register_read_async(struct rt2x00_dev *rt2x00dev,  				   const unsigned int offset, -				   void (*callback)(struct rt2x00_dev*,int,u32)) +				   bool (*callback)(struct rt2x00_dev*, int, u32))  {  	struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev);  	struct urb *urb;  |