linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Slaby <jslaby@suse.cz>
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Crestez Dan Leonard <leonard.crestez@intel.com>,
	Jonathan Cameron <jic23@kernel.org>, Jiri Slaby <jslaby@suse.cz>
Subject: [PATCH 3.12 015/100] iio: Fix error handling in iio_trigger_attach_poll_func
Date: Fri, 19 Aug 2016 09:10:14 +0200	[thread overview]
Message-ID: <0602a2f2d4cbc21c3b4458c29db95d6b1ce521e0.1471589700.git.jslaby@suse.cz> (raw)
In-Reply-To: <bc76af4e1436406a1f53da243e76bd10327691f2.1471589700.git.jslaby@suse.cz>
In-Reply-To: <cover.1471589700.git.jslaby@suse.cz>

From: Crestez Dan Leonard <leonard.crestez@intel.com>

3.12-stable review patch.  If anyone has any objections, please let me know.

===============

commit 99543823357966ac938d9a310947e731b67338e6 upstream.

When attaching a pollfunc iio_trigger_attach_poll_func will allocate a
virtual irq and call the driver's set_trigger_state function. Fix error
handling to undo previous steps if any fails.

In particular this fixes handling errors from a driver's
set_trigger_state function. When using triggered buffers a failure to
enable the trigger used to make the buffer unusable.

Signed-off-by: Crestez Dan Leonard <leonard.crestez@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/iio/industrialio-trigger.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
index bf5e70a32d3f..08fb267bf31e 100644
--- a/drivers/iio/industrialio-trigger.c
+++ b/drivers/iio/industrialio-trigger.c
@@ -213,22 +213,35 @@ static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
 
 	/* Prevent the module from being removed whilst attached to a trigger */
 	__module_get(pf->indio_dev->info->driver_module);
+
+	/* Get irq number */
 	pf->irq = iio_trigger_get_irq(trig);
+	if (pf->irq < 0)
+		goto out_put_module;
+
+	/* Request irq */
 	ret = request_threaded_irq(pf->irq, pf->h, pf->thread,
 				   pf->type, pf->name,
 				   pf);
-	if (ret < 0) {
-		module_put(pf->indio_dev->info->driver_module);
-		return ret;
-	}
+	if (ret < 0)
+		goto out_put_irq;
 
+	/* Enable trigger in driver */
 	if (trig->ops && trig->ops->set_trigger_state && notinuse) {
 		ret = trig->ops->set_trigger_state(trig, true);
 		if (ret < 0)
-			module_put(pf->indio_dev->info->driver_module);
+			goto out_free_irq;
 	}
 
 	return ret;
+
+out_free_irq:
+	free_irq(pf->irq, pf);
+out_put_irq:
+	iio_trigger_put_irq(trig, pf->irq);
+out_put_module:
+	module_put(pf->indio_dev->info->driver_module);
+	return ret;
 }
 
 static int iio_trigger_detach_poll_func(struct iio_trigger *trig,
-- 
2.9.3

  parent reply	other threads:[~2016-08-19  7:33 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-19  7:09 [PATCH 3.12 000/100] 3.12.63-stable review Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 001/100] x86/mm: Add barriers and document switch_mm()-vs-flush synchronization Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 002/100] mm: migrate dirty page without clear_page_dirty_for_io etc Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 003/100] panic: release stale console lock to always get the logbuf printed out Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 004/100] printk: do cond_resched() between lines while outputting to consoles Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 005/100] um: Stop abusing __KERNEL__ Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 006/100] um: Fix out-of-tree build Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 007/100] um: Remove copy&paste code from init.h Jiri Slaby
2016-08-19  7:08 ` [PATCH 3.12 008/100] netfilter: x_tables: validate targets of jumps Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 009/100] libceph: set 'exists' flag for newly up osd Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 010/100] libceph: apply new_state before new_up_client on incrementals Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 011/100] kvm: Fix irq route entries exceeding KVM_MAX_IRQ_ROUTES Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 012/100] tracing: Handle NULL formats in hold_module_trace_bprintk_format() Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 013/100] drm/radeon: fix asic initialization for virtualized environments Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 014/100] drm/i915/ilk: Don't disable SSC source if it's in use Jiri Slaby
2016-08-19  7:10 ` Jiri Slaby [this message]
2016-08-19  7:10 ` [PATCH 3.12 016/100] staging: iio: accel: fix error check Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 017/100] iio: accel: kxsd9: fix the usage of spi_w8r8() Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 018/100] iio:ad7266: Fix broken regulator error handling Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 019/100] iio:ad7266: Fix support for optional regulators Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 020/100] iio:ad7266: Fix probe deferral for vref Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 021/100] tty/vt/keyboard: fix OOB access in do_compute_shiftstate() Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 022/100] ALSA: dummy: Fix a use-after-free at closing Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 023/100] ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift() Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 024/100] ALSA: ctl: Stop notification after disconnection Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 025/100] scsi: fix race between simultaneous decrements of ->host_failed Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 026/100] Fix reconnect to not defer smb3 session reconnect long after socket reconnect Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 027/100] xen/acpi: allow xen-acpi-processor driver to load on Xen 4.7 Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 028/100] tmpfs: don't undo fallocate past its last page Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 029/100] tmpfs: fix regression hang in fallocate undo Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 030/100] s390/seccomp: fix error return for filtered system calls Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 031/100] fs/nilfs2: fix potential underflow in call to crc32_le Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 032/100] arc: unwind: warn only once if DW2_UNWIND is disabled Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 033/100] xen/pciback: Fix conf_space read/write overlap check Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 034/100] Input: wacom_w8001 - w8001_MAX_LENGTH should be 13 Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 035/100] Input: xpad - validate USB endpoint count during probe Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 036/100] ext4: verify extent header depth Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 037/100] qeth: delete napi struct when removing a qeth device Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 038/100] mmc: block: fix packed command header endianness Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 039/100] mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 040/100] x86, asmlinkage, lguest: Pass in globals into assembler statement Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 041/100] can: at91_can: RX queue could get stuck at high bus load Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 042/100] can: fix handling of unmodifiable configuration options fix Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 043/100] can: fix oops caused by wrong rtnl dellink usage Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 044/100] ipr: Clear interrupt on croc/crocodile when running with LSI Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 045/100] net: mvneta: set real interrupt per packet for tx_done Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 046/100] random32: add prandom_u32_max and convert open coded users Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 047/100] tcp: make challenge acks less predictable Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 048/100] net/irda: fix NULL pointer dereference on memory allocation failure Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 049/100] tcp: consider recv buf for the initial window scale Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 050/100] MIPS: KVM: Fix mapped fault broken commpage handling Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 051/100] MIPS: KVM: Add missing gfn range check Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 052/100] MIPS: KVM: Fix gfn range check in kseg0 tlb faults Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 053/100] MIPS: KVM: Propagate kseg0/mapped tlb fault errors Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 054/100] HID: i2c-hid: set power sleep before shutdown Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 055/100] HID: multitouch: Add MT_QUIRK_NOT_SEEN_MEANS_UP to Surface Pro 3 Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 056/100] x86/mm: Improve switch_mm() barrier comments Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 057/100] arm: oabi compat: add missing access checks Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 058/100] KEYS: 64-bit MIPS needs to use compat_sys_keyctl for 32-bit userspace Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 059/100] apparmor: fix ref count leak when profile sha1 hash is read Jiri Slaby
2016-08-19  7:10 ` [PATCH 3.12 060/100] block: fix use-after-free in seq file Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 061/100] sysv, ipc: fix security-layer leaking Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 062/100] fuse: fix wrong assignment of ->flags in fuse_send_init() Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 063/100] crypto: gcm - Filter out async ghash if necessary Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 064/100] crypto: scatterwalk - Fix test in scatterwalk_done Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 065/100] ext4: check for extents that wrap around Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 066/100] ext4: fix deadlock during page writeback Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 067/100] ext4: don't call ext4_should_journal_data() on the journal inode Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 068/100] ext4: short-cut orphan cleanup on error Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 069/100] ext4: fix reference counting bug on block allocation error Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 070/100] usb: renesas_usbhs: protect the CFIFOSEL setting in usbhsg_ep_enable() Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 071/100] USB: serial: option: add support for Telit LE910 PID 0x1206 Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 072/100] gpio: pca953x: Fix NBANK calculation for PCA9536 Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 073/100] s5p-mfc: Set device name for reserved memory region devs Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 074/100] s5p-mfc: Add release callback for " Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 075/100] Bluetooth: Fix l2cap_sock_setsockopt() with optname BT_RCVMTU Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 076/100] cifs: Check for existing directory when opening file with O_CREAT Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 077/100] cifs: fix crash due to race in hmac(md5) handling Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 078/100] CIFS: Fix a possible invalid memory access in smb2_query_symlink() Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 079/100] random: properly align get_random_int_hash Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 080/100] nfs: don't create zero-length requests Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 081/100] ARM: 8579/1: mm: Fix definition of pmd_mknotpresent Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 082/100] netlabel: add address family checks to netlbl_{sock,req}_delattr() Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 083/100] drm/radeon: add a delay after ATPX dGPU power off Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 084/100] drm/radeon: Poll for both connect/disconnect on analog connectors Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 085/100] drm/radeon: fix firmware info version checks Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 086/100] drm/radeon: support backlight control for UNIPHY3 Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 087/100] drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown" Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 088/100] balloon: check the number of available pages in leak balloon Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 089/100] ftrace/recordmcount: Work around for addition of metag magic but not relocations Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 090/100] metag: Fix __cmpxchg_u32 asm constraint for CMP Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 091/100] IB/mlx5: Fix MODIFY_QP command input structure Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 092/100] IB/mlx5: Fix returned values of query QP Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 093/100] IB/mlx5: Fix post send fence logic Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 094/100] IB/IPoIB: Don't update neigh validity for unresolved entries Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 095/100] IB/mlx4: Fix the SQ size of an RC QP Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 096/100] ubi: Make volume resize power cut aware Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 097/100] ubi: Fix race condition between ubi device creation and udev Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 098/100] Input: i8042 - break load dependency between atkbd/psmouse and i8042 Jiri Slaby
2016-08-19 10:06   ` Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 099/100] dm flakey: error READ bios during the down_interval Jiri Slaby
2016-08-19  7:11 ` [PATCH 3.12 100/100] module: Invalidate signatures on force-loaded modules Jiri Slaby
2016-08-19  7:54 ` [PATCH 3.12 009/101] netfilter: x_tables: speed up jump target validation Jiri Slaby
2016-08-19 19:03 ` [PATCH 3.12 000/100] 3.12.63-stable review Guenter Roeck
2016-09-06 13:47   ` Jiri Slaby

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0602a2f2d4cbc21c3b4458c29db95d6b1ce521e0.1471589700.git.jslaby@suse.cz \
    --to=jslaby@suse.cz \
    --cc=jic23@kernel.org \
    --cc=leonard.crestez@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).