public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] iio: inkern: add error case in iio_channel_get()
@ 2012-09-10  8:02 Kim, Milo
  2012-09-10  9:16 ` Jonathan Cameron
  2012-09-10  9:24 ` Lars-Peter Clausen
  0 siblings, 2 replies; 6+ messages in thread
From: Kim, Milo @ 2012-09-10  8:02 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Jonathan Cameron, Lars-Peter Clausen, linux-iio@vger.kernel.org,
	linux-kernel@vger.kernel.org

 The datasheet name is defined in the IIO driver.
 On the other hand, the adc_channel_label is configured in
 the platform machine side.
 If the datasheet name is not matched with any adc_channel_label,
 the iio_channel_get() should be returned as error for preventing
 using invalid IIO channel data.

 Moreover, this patch detects NULL pointer dereference problem at early time.
 In general, the IIO driver just accesses to any member of the iio_chan_spec
 in own xxx_read_raw() function.
 If the iio_chan_spec is invalid pointer, NULL dereference problem may occur
 such like 'iio_chan_spec->channel' or 'iio_chan_spec->type'.
 If the iio_channel_get() gets failed in the IIO consumer,
 then no read_raw() operation proceeds.

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
---
 drivers/iio/inkern.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index 1faa240..a5caf6b 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -136,11 +136,15 @@ struct iio_channel *iio_channel_get(const char *name, const char *channel_name)
 
 	channel->indio_dev = c->indio_dev;
 
-	if (c->map->adc_channel_label)
+	if (c->map->adc_channel_label) {
 		channel->channel =
 			iio_chan_spec_from_name(channel->indio_dev,
 						c->map->adc_channel_label);
 
+		if (channel->channel == NULL)
+			return ERR_PTR(-ENODEV);
+	}
+
 	return channel;
 }
 EXPORT_SYMBOL_GPL(iio_channel_get);
-- 
1.7.9.5


Best Regards,
Milo



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-09-17  8:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-10  8:02 [PATCH 2/2] iio: inkern: add error case in iio_channel_get() Kim, Milo
2012-09-10  9:16 ` Jonathan Cameron
2012-09-14  0:59   ` Kim, Milo
2012-09-14  8:24     ` Jonathan Cameron
2012-09-17  8:46       ` Kim, Milo
2012-09-10  9:24 ` Lars-Peter Clausen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox