staging:iio:max1363: Don't free uninitialized variable
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 11 Jul 2012 09:28:00 +0000 (10:28 +0100)
committerJonathan Cameron <jic23@kernel.org>
Thu, 12 Jul 2012 16:50:26 +0000 (17:50 +0100)
It is possible that on one of the error paths we are going to try to free
'rxbuf', even though it has not been allocated yet, which cause the following
warning:
drivers/staging/iio/adc/max1363_ring.c: In function 'max1363_trigger_handler':
drivers/staging/iio/adc/max1363_ring.c:87:7: warning: 'rxbuf' may be used
uninitialized in this function

Reported-by: Fengguang Wu <wfg@linux.intel.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
drivers/staging/iio/adc/max1363_ring.c

index bf6b0c2..774ae1b 100644 (file)
@@ -74,7 +74,7 @@ static irqreturn_t max1363_trigger_handler(int irq, void *p)
        else
                b_sent = i2c_master_recv(st->client, rxbuf, numvals);
        if (b_sent < 0)
-               goto done;
+               goto done_free;
 
        time_ns = iio_get_time_ns();
 
@@ -82,9 +82,10 @@ static irqreturn_t max1363_trigger_handler(int irq, void *p)
                memcpy(rxbuf + d_size - sizeof(s64), &time_ns, sizeof(time_ns));
        iio_push_to_buffer(indio_dev->buffer, rxbuf, time_ns);
 
+done_free:
+       kfree(rxbuf);
 done:
        iio_trigger_notify_done(indio_dev->trig);
-       kfree(rxbuf);
 
        return IRQ_HANDLED;
 }