Skip to contentSkip to conversation

rtl8188eu: Replace rcu_dereference() with rcu_access_pointer()

PATCH In review Andreea-Cristina Bernat 3 participants 6 messages Aug 17, 2014 – Sep 5, 2014 Staging

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rtl8188eu: Replace rcu_dereference() with rcu_access_pointer()

The "rcu_dereference()" call is used directly in a condition. Since its return value is never dereferenced it is recommended to use "rcu_access_pointer()" instead of "rcu_dereference()". Therefore, this patch makes the replacement.

The following Coccinelle semantic patch was used:
@@
@@

(
if(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
|
while(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
)

---
 drivers/staging/rtl8188eu/core/rtw_mlme.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/rtl8188eu/core/rtw_mlme.c +1 -1
index 155282e..8643003 100644
@@ -1544,7 +1544,7 @@ void rtw_dynamic_check_timer_handlder(struct adapter *adapter)
 
 	rcu_read_lock();
 
-	if (rcu_dereference(adapter->pnetdev->rx_handler_data) &&
+	if (rcu_access_pointer(adapter->pnetdev->rx_handler_data) &&
 	    (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true)) {
 		/*  expire NAT2.5 entry */
 		nat25_db_expire(adapter);
Signature · 1 line
1.9.1
maintainer
#1 lore raw
Quoted 25 lines · Andreea-Cristina Bernat

The "rcu_dereference()" call is used directly in a condition. Since its return value is never dereferenced it is recommended to use "rcu_access_pointer()" instead of "rcu_dereference()". Therefore, this patch makes the replacement.

The following Coccinelle semantic patch was used:
@@
@@

(
if(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
|
while(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
)

Quoted 4 lines
---
 drivers/staging/rtl8188eu/core/rtw_mlme.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

This patch fails to apply to my tree, can you refresh it against the staging-next branch of the staging.git tree on kernel.org and resend?

thanks,

greg k-h

#2 lore raw

Hello,

I cloned this:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

and after moved to staging-next branch, but in both cases, in those files I don't find any use of rcu_dereference() call (the call which I am looking for to modify).

Thank you,
Andreea

2014-08-30 23:42 GMT+03:00 Greg KH <[email protected]>:

Quoted 37 lines · Andreea-Cristina Bernat
Quoted 25 lines

The "rcu_dereference()" call is used directly in a condition. Since its return value is never dereferenced it is recommended to use "rcu_access_pointer()" instead of "rcu_dereference()". Therefore, this patch makes the replacement.

The following Coccinelle semantic patch was used:
@@
@@

(
if(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
|
while(
(<+...
- rcu_dereference
+ rcu_access_pointer
(...)
...+>)) {...}
)

Quoted 4 lines
---
 drivers/staging/rtl8188eu/core/rtw_mlme.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

This patch fails to apply to my tree, can you refresh it against the staging-next branch of the staging.git tree on kernel.org and resend?

thanks,

greg k-h

#3 lore raw
Quoted 8 lines · Andreea Bernat

Hello,

I cloned this:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

and after moved to staging-next branch, but in both cases, in those files I don't find any use of rcu_dereference() call (the call which I am looking for to modify).

The rcu_dereference() call in core/rtw_mlme.c is no longer there in mainline 3.17, thus it was removed some time ago.

There is a similar reference in os_dep/recv_linux.c. Perhaps it should be removed.

This problem shows the importance of working with the latest pull of the staging repo when working with staging code. Even then patches may suffer mid-air collisions if multiple devs are working on a particular piece of code.

Larry

maintainer
#4 lore raw
In reply to Andreea Bernat
Quoted 8 lines · Andreea Bernat

Hello,

I cloned this:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

and after moved to staging-next branch, but in both cases, in those files I don't find any use of rcu_dereference() call (the call which I am looking for to modify).

Then there's nothing left to be done here, right? :)

thanks,

greg k-h

#5 lore raw

2014-09-05 0:38 GMT+03:00 Greg KH <[email protected]>:

Quoted 11 lines · Andreea Bernat
Quoted 8 lines

Hello,

I cloned this:
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

and after moved to staging-next branch, but in both cases, in those files I don't find any use of rcu_dereference() call (the call which I am looking for to modify).

Then there's nothing left to be done here, right? :)

Yes :-)

Thank you,
Andreea

Quoted 4 lines

thanks,

greg k-h