Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1d35dfa authored by Ivo van Doorn's avatar Ivo van Doorn Committed by John W. Linville
Browse files

rt2x00: Fix sparse warning on nested container_of()



Sparse produces warnings about nested contain_of() statements,
this means that lines like:
	interface_to_usbdev(to_usb_interface(rt2x00dev->dev));
will upset sparse.
Add a new macro to rt2x00usb.h which will convert to device
structure to the usb_device pointer in 2 steps to prevent this
sparse warning.

Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d74f5ba4
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1672,8 +1672,7 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev)
static int rt2500usb_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
{
	struct rt2x00_dev *rt2x00dev = hw->priv;
	struct usb_device *usb_dev =
		interface_to_usbdev(to_usb_interface(rt2x00dev->dev));
	struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev);
	struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
	struct rt2x00_intf *intf = vif_to_intf(tx_info->control.vif);
	struct queue_entry_priv_usb_bcn *bcn_priv;
+3 −6
Original line number Diff line number Diff line
@@ -40,8 +40,7 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev,
			     void *buffer, const u16 buffer_length,
			     const int timeout)
{
	struct usb_device *usb_dev =
		interface_to_usbdev(to_usb_interface(rt2x00dev->dev));
	struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev);
	int status;
	unsigned int i;
	unsigned int pipe =
@@ -162,8 +161,7 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb)
int rt2x00usb_write_tx_data(struct queue_entry *entry)
{
	struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
	struct usb_device *usb_dev =
		interface_to_usbdev(to_usb_interface(rt2x00dev->dev));
	struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev);
	struct queue_entry_priv_usb *entry_priv = entry->priv_data;
	struct skb_frame_desc *skbdesc;
	u32 length;
@@ -319,8 +317,7 @@ EXPORT_SYMBOL_GPL(rt2x00usb_disable_radio);
void rt2x00usb_init_rxentry(struct rt2x00_dev *rt2x00dev,
			    struct queue_entry *entry)
{
	struct usb_device *usb_dev =
		interface_to_usbdev(to_usb_interface(rt2x00dev->dev));
	struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev);
	struct queue_entry_priv_usb *entry_priv = entry->priv_data;

	usb_fill_bulk_urb(entry_priv->urb, usb_dev,
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,12 @@
#ifndef RT2X00USB_H
#define RT2X00USB_H

#define to_usb_device_intf(d) \
({ \
	struct usb_interface *intf = to_usb_interface(d); \
	interface_to_usbdev(intf); \
})

/*
 * This variable should be used with the
 * usb_driver structure initialization.