On 03/22/2016, 03:00 PM, Takashi Iwai wrote:
> int main()
> {
>       int i;
>       long fd;
>         pthread_t th[32];
> 
>       fd = open("/dev/vhci", O_RDWR);
>       if (fd < 0)
>               err(1, "open");
>         for (i = 0; i < 32; i++)
>               pthread_create(&th[i], 0, test, (void*)fd);
>         for (i = 0; i < 32; i++)
>               pthread_join(th[i], NULL);
>       return 0;
> }
> ================================================================
> 
> For fixing these, we need a proper mutex protection.  A patch like
> below seems helping, at least for the test case above.

I didn't fix this and kept it simple as I believe concurrent accesses
from a single opener are not allowed by design. But if we want to
support this, we of course need locking like this.

Anyway, I would appreciate any input from the BT fellows. There are more
races like this, apparently.

thanks,
-- 
js
suse labs

Reply via email to