Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3104595ybi; Thu, 18 Jul 2019 21:06:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqwgdhuAKPo/U6dmVtnS08qKaFAmODWzRqZ3hBoq8wCS7Y78mcND0PQ0osibXW7ae4P9MsMU X-Received: by 2002:a65:404d:: with SMTP id h13mr50537995pgp.71.1563509216602; Thu, 18 Jul 2019 21:06:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563509216; cv=none; d=google.com; s=arc-20160816; b=iAUw0S0DZcNY841pPdPi/g2pm6tBbk+S5UVeGjOqXP9DJmYlHK1lH/C1qc9qbrRlAd x08nJUdgBS4DhuU10BlIX55RhDWgzA34s2H327wOa6E++HZGqlaK1aCDGxPdRdqngU4C CcpSD4O06nkTJh3PKUgJOIS4Z68puE/vRRcBSDE+7K+whOwK4jZlUhuOAcpE7+9b5z6T ji78zVKAGKQwiYrNCiGrtXvpAa1XFgIfdaStuxZb1drkmdfK4l7YKc2MYE7HC0p1VNA0 2hCwXUAn2T/LDfe9CQES8gQwlGekP6aMFYcjkB9Ag0bpzWjnkpMqhq1C7YzaChe846zr XPnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HFnKh8wSMunfmwAYETptAmV3z1uxcYmoZ/SCQW8qlVU=; b=EnihXRH5eiL2q/V5xorQk1UGHfjP/wp+ow1ePSGkhqGslwONWfdLcuQpodtaiXcn/v lPw/jJZNRJ29ADepLGpGyaIFWbUIQaTmT51zJg7rSdkw3YME+Kpd5PtrlZJHulyTMZJb o1c6UsWohFIVVG2VK5eVBEeH2IKb4sHJ1vn5XanpB7RKsPYj6m+RKvkdUcqYvkXctFL4 jYC76aTeiTWggJ3x0gzEvy1Pe+DZf/n0WhgMVRABYHVQNnVnpb0FVXs2LIMYvCvVtid8 LTF5Q2KfxyKix+866PU6s1AoymRUT2eshgVgb6XlvcPjKPuQPrLGw13pHdYbxGUACoHm aKDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="axBedZw/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d7si4181789pgc.470.2019.07.18.21.06.41; Thu, 18 Jul 2019 21:06:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="axBedZw/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731081AbfGSEE3 (ORCPT + 99 others); Fri, 19 Jul 2019 00:04:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:36686 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731009AbfGSEEZ (ORCPT ); Fri, 19 Jul 2019 00:04:25 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 87C24218CA; Fri, 19 Jul 2019 04:04:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563509064; bh=QeqbiBHLeOYnomZOPhjCcLO0gyl5URbYFXDGeDoVHTo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=axBedZw/m/Qk+VePddSXcN/ouT+qGAHHVL2IVLBe49pHLaw5Ec9DCumhQA5VmAgMi dtK7AYLIwUM71KNAh3KlLu0wEGhvfPWuNORUaVs6/4lze5HpHwfENQfg30SHSPIi7A DtIK3Gn3seAWuteFLyDGTR+racn0GGT6W96J6aKU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alexandru Ardelean , Jonathan Cameron , Sasha Levin , linux-iio@vger.kernel.org Subject: [PATCH AUTOSEL 5.1 048/141] iio: adxl372: fix iio_triggered_buffer_{pre,post}enable positions Date: Fri, 19 Jul 2019 00:01:13 -0400 Message-Id: <20190719040246.15945-48-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190719040246.15945-1-sashal@kernel.org> References: <20190719040246.15945-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexandru Ardelean [ Upstream commit 0e4f0b42f42d88507b48282c8915f502551534e4 ] The iio_triggered_buffer_{predisable,postenable} functions attach/detach the poll functions. For the predisable hook, the disable code should occur before detaching the poll func, and for the postenable hook, the poll func should be attached before the enable code. Signed-off-by: Alexandru Ardelean Signed-off-by: Jonathan Cameron Signed-off-by: Sasha Levin --- drivers/iio/accel/adxl372.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c index 3b84cb243a87..055227cb3d43 100644 --- a/drivers/iio/accel/adxl372.c +++ b/drivers/iio/accel/adxl372.c @@ -782,10 +782,14 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev) unsigned int mask; int i, ret; - ret = adxl372_set_interrupts(st, ADXL372_INT1_MAP_FIFO_FULL_MSK, 0); + ret = iio_triggered_buffer_postenable(indio_dev); if (ret < 0) return ret; + ret = adxl372_set_interrupts(st, ADXL372_INT1_MAP_FIFO_FULL_MSK, 0); + if (ret < 0) + goto err; + mask = *indio_dev->active_scan_mask; for (i = 0; i < ARRAY_SIZE(adxl372_axis_lookup_table); i++) { @@ -793,8 +797,10 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev) break; } - if (i == ARRAY_SIZE(adxl372_axis_lookup_table)) - return -EINVAL; + if (i == ARRAY_SIZE(adxl372_axis_lookup_table)) { + ret = -EINVAL; + goto err; + } st->fifo_format = adxl372_axis_lookup_table[i].fifo_format; st->fifo_set_size = bitmap_weight(indio_dev->active_scan_mask, @@ -814,26 +820,25 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev) if (ret < 0) { st->fifo_mode = ADXL372_FIFO_BYPASSED; adxl372_set_interrupts(st, 0, 0); - return ret; + goto err; } - return iio_triggered_buffer_postenable(indio_dev); + return 0; + +err: + iio_triggered_buffer_predisable(indio_dev); + return ret; } static int adxl372_buffer_predisable(struct iio_dev *indio_dev) { struct adxl372_state *st = iio_priv(indio_dev); - int ret; - - ret = iio_triggered_buffer_predisable(indio_dev); - if (ret < 0) - return ret; adxl372_set_interrupts(st, 0, 0); st->fifo_mode = ADXL372_FIFO_BYPASSED; adxl372_configure_fifo(st); - return 0; + return iio_triggered_buffer_predisable(indio_dev); } static const struct iio_buffer_setup_ops adxl372_buffer_ops = { -- 2.20.1