• Julia Lawall's avatar
    HID: eliminate a double lock in debug code · ca9fe158
    Julia Lawall authored
    The path around the loop ends with the lock held, so the call to mutex_lock
    is moved before the beginning of the loop.
    
    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)
    
    // <smpl>
    @locked@
    expression E1;
    position p;
    @@
    
    read_lock(E1@p,...);
    
    @r exists@
    expression x <= locked.E1;
    expression locked.E1;
    expression E2;
    identifier lock;
    position locked.p,p1,p2;
    @@
    
    *lock@p1 (E1@p,...);
    ... when != E1
        when != \(x = E2\|&x\)
    *lock@p2 (E1,...);
    // </smpl>
    Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    ca9fe158
hid-debug.c 35.2 KB