Messages in this thread | | | From | Anton Volkov <> | Subject | Question about apds990x.ko | Date | Thu, 10 Aug 2017 17:57:30 +0300 |
| |
Hello.
While searching for races in the Linux kernel I've come across "drivers/misc/apds990x.ko" module. Here are questions that I came up with while analyzing results. Lines are given using the info from Linux v4.12.
Consider the following case:
Thread 1: Thread 2: apds990x_suspend apds990x_resume apds990x_irq -> apds990x_chip_on if (!pm_runtime_suspended (chip->client->dev)){ -> apds990x_configure if (status & APDS990X_ST_AINT) { chip->again_meas = 1 chip->again_meas = chip->again_next (apds990x.c: line 571) (apds990x.c: line 505) } }
First question. Is this race feasible from your point of view? Second question. The check for the device suspension status (pm_runtime_suspended()) is present in the interrupt handler, but the functions pm_runtime_set_suspended / pm_runtime_set_active are not used in apds990x_suspend / apds990x_resume respectively. Do you know about any other method being used to make the modification of suspension status?
Thank you for your time.
-- Anton Volkov Linux Verification Center, ISPRAS web: http://linuxtesting.org e-mail: avolkov@ispras.ru
| |