• Lars-Peter Clausen's avatar
    staging:iio:adis16260: Fix drvdata inconsistency · 97271c3b
    Lars-Peter Clausen authored
    The SPI drvdata is set to adis16260_state struct in probe(), but assumed to be
    the iio_dev struct in remove(). Fix this by setting it to the iio_dev in
    probe().
    
    The issue has been discovered using the following coccinelle patch:
    
    // <smpl>
    @r1@
    type T;
    T data;
    expression dev;
    @@
    (
    spi_set_drvdata(dev, (void *)data)
    |
    spi_set_drvdata(dev, data)
    )
    
    @r2@
    type r1.T;
    T data;
    position p;
    expression dev;
    @@
    data = spi_get_drvdata@p(dev)
    
    @depends on r1@
    position p != r2.p;
    expression dev;
    identifier data;
    @@
    *data = spi_get_drvdata@p(dev)
    // </smpl>
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
    97271c3b
adis16260_core.c 17.8 KB