The "br_port" local variables obtained through the rcu_dereference() calls are not dereferenced in the rest of their function. Therefore, it is recommended to use rcu_access_pointer() instead of rcu_dereference(). This patch makes the replacements. The first step to detect this was made with the following Coccinelle semantic patch: @@ identifier p; @@ * p = rcu_dereference(...) ... when any when != p ( * if( (<+...p...+>) ) { ... } | * while( (<+...p...+>) ) { ... } ) ... when != p After the analysis of the output, the change was made manually. Signed-off-by: Andreea-Cristina Bernat <bernat.ada@xxxxxxxxx> --- drivers/staging/rtl8188eu/core/rtw_xmit.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/rtl8188eu/core/rtw_xmit.c b/drivers/staging/rtl8188eu/core/rtw_xmit.c index 1413ec8..93228dc 100644 --- a/drivers/staging/rtl8188eu/core/rtw_xmit.c +++ b/drivers/staging/rtl8188eu/core/rtw_xmit.c @@ -1684,7 +1684,7 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) void *br_port = NULL; rcu_read_lock(); - br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + br_port = rcu_access_pointer(padapter->pnetdev->rx_handler_data); rcu_read_unlock(); spin_lock_bh(&padapter->br_ext_lock); if (!(skb->data[0] & 1) && br_port && @@ -1868,7 +1868,7 @@ s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt) } rcu_read_lock(); - br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + br_port = rcu_access_pointer(padapter->pnetdev->rx_handler_data); rcu_read_unlock(); if (br_port && check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE)) { -- 1.9.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel