xiaoxiang781216 commented on a change in pull request #5204: URL: https://github.com/apache/incubator-nuttx/pull/5204#discussion_r821634793
########## File path: drivers/input/ajoystick.c ########## @@ -526,12 +461,7 @@ static ssize_t ajoy_read(FAR struct file *filep, FAR char *buffer, /* Get exclusive access to the driver structure */ - ret = ajoy_takesem(&priv->au_exclsem); - if (ret < 0) - { - ierr("ERROR: ajoy_takesem failed: %d\n", ret); - return ret; - } + flags = enter_critical_section(); Review comment: You can't fix the race condition in all case. How to handle this sequence? 1. Thread A just enter ajoy_close and switch to thread B 2. Thread B just enter ajoy_read and switch to thread A again 3. Thread A continue ajoy_close and release opriv 4. Thread B resume and touch the freed memory Basically, the resource release is very very special, you can't protect the resource by the normal approach. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org