diff options
author | Martin Fuzzey <mfuzzey@parkeon.com> | 2015-02-19 17:17:44 +0300 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2015-03-14 21:54:14 +0300 |
commit | c1b03ab5e886760bdd38c9c7a27af149046ffe01 (patch) | |
tree | ad8d671b87c667e8eeb4e6ae97811132cecfddbe /drivers/iio/industrialio-event.c | |
parent | af5e1a68318e2ed2de22fc2d7a02f2882abe073c (diff) | |
download | linux-c1b03ab5e886760bdd38c9c7a27af149046ffe01.tar.xz |
iio: core: Fix double free.
When an error occurred during event registration memory was freed twice
resulting in kernel memory corruption and a crash in unrelated code.
The problem was caused by
iio_device_unregister_eventset()
iio_device_unregister_sysfs()
being called twice, once on the error path and then
again via iio_dev_release().
Fix this by making these two functions idempotent so they
may be called multiple times.
The problem was observed before applying
78b33216 iio:core: Handle error when mask type is not separate
Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/industrialio-event.c')
-rw-r--r-- | drivers/iio/industrialio-event.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c index a4b397048f71..a99692ba91bc 100644 --- a/drivers/iio/industrialio-event.c +++ b/drivers/iio/industrialio-event.c @@ -500,6 +500,7 @@ int iio_device_register_eventset(struct iio_dev *indio_dev) error_free_setup_event_lines: iio_free_chan_devattr_list(&indio_dev->event_interface->dev_attr_list); kfree(indio_dev->event_interface); + indio_dev->event_interface = NULL; return ret; } |