Received: by 10.213.65.68 with SMTP id h4csp3644424imn; Tue, 10 Apr 2018 02:14:50 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+zPhHpOdEh08KvmVa29FkABzE5mwOu77DC7GsOJdITOWGZ3JitsJeE+iXjoH1hd/2z9gPr X-Received: by 10.98.198.195 with SMTP id x64mr2066500pfk.11.1523351690897; Tue, 10 Apr 2018 02:14:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523351690; cv=none; d=google.com; s=arc-20160816; b=FE9KjFPtumERbC15ylB9C/lYwphF6mcQsYRjB4MPxiVuZ6BxKvYlR2DnGpukVWyFLm 9UibrD7NAtndLhdgZbu5clROv2oPQmPuBppIvl9W/nEp7h+Pit4uDV4eJa7LjmxlWdPQ Ggw//yzaG0U1sFc8rGjg+FhYHh41/2NM1oB256we7E5BL8U8riOb1JHbS/QCgm4sLmtW pcwOlELE5rqbbrRBMBAHSWxY/pHRDEzvILjX2+ejv72u6/id6eeM2UTzM0N99Q7Yxbml v92Mf5nCPsNdgpRQ/4m5Qtf9kMrbFRgB3z5gSFqvqUQPrQpH5gI31uBkmCHSXIvSWmiR peCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=vcTgXu1xZ+9Q6pD+MNvaGf6uPsn18XD1F1ryJ4m3ZGg=; b=FGTSc5i008m47AsTBw+vQU/Iw7Ckvb+2mK+nHWiTKGVohyq5WhBZWmgWPzw1Uar7JW 0zPqVhpoOwo+6eXTfn6/LCvjO8bkWq03T7FNeRd5Fk/CQXdx5pJLCnAGJToinLOnVTdx doaS1qmFKAqhn/HNoQfUwVl60JqbLN2qmqG/qI/cOyOJJa1zltt7PcQxE5Zuigf284qq 65HuDmREbgaH3RGxaaH5pZye6O/jSLxXNGf5NUMGzd9vRbOTHLO2QUU5Hxmn48R67htL O90gzEU7CDuBbdVvGHW8StBl3Oj2cl0EW3u2NLAvxulWpVyp1nsl4rnRev90d+UYo+WE tgSg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t141si1533713pgb.38.2018.04.10.02.14.14; Tue, 10 Apr 2018 02:14:50 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753628AbeDJJKo (ORCPT + 99 others); Tue, 10 Apr 2018 05:10:44 -0400 Received: from esa6.microchip.iphmx.com ([216.71.154.253]:48249 "EHLO esa6.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753078AbeDJJGS (ORCPT ); Tue, 10 Apr 2018 05:06:18 -0400 X-IronPort-AV: E=Sophos;i="5.48,431,1517900400"; d="scan'208";a="10408598" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 10 Apr 2018 02:06:17 -0700 Received: from eh-station.mchp-main.com (10.10.76.4) by chn-sv-exch02.mchp-main.com (10.10.76.38) with Microsoft SMTP Server id 14.3.352.0; Tue, 10 Apr 2018 02:06:17 -0700 From: Eugen Hristev To: , , , , , , , , , , CC: Eugen Hristev Subject: [PATCH v3 06/11] iio: inkern: add module put/get on iio dev module when requesting channels Date: Tue, 10 Apr 2018 11:57:52 +0300 Message-ID: <1523350677-27106-7-git-send-email-eugen.hristev@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1523350677-27106-1-git-send-email-eugen.hristev@microchip.com> References: <1523350677-27106-1-git-send-email-eugen.hristev@microchip.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When requesting channels for a particular consumer device, besides requesting the device (incrementing the reference counter), also do it for the driver module of the iio dev. This will avoid the situation where the producer IIO device can be removed and the consumer is still present in the kernel. Signed-off-by: Eugen Hristev --- drivers/iio/inkern.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index ec98790..68d9b87 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include "iio_core.h" @@ -152,6 +153,7 @@ static int __of_iio_channel_get(struct iio_channel *channel, if (index < 0) goto err_put; channel->channel = &indio_dev->channels[index]; + try_module_get(channel->indio_dev->driver_module); return 0; @@ -256,8 +258,10 @@ static struct iio_channel *of_iio_channel_get_all(struct device *dev) return chans; error_free_chans: - for (i = 0; i < mapind; i++) + for (i = 0; i < mapind; i++) { + module_put(chans[i].indio_dev->driver_module); iio_device_put(chans[i].indio_dev); + } kfree(chans); return ERR_PTR(ret); } @@ -351,6 +355,7 @@ void iio_channel_release(struct iio_channel *channel) { if (!channel) return; + module_put(channel->indio_dev->driver_module); iio_device_put(channel->indio_dev); kfree(channel); } @@ -482,6 +487,7 @@ void iio_channel_release_all(struct iio_channel *channels) struct iio_channel *chan = &channels[0]; while (chan->indio_dev) { + module_put(chan->indio_dev->driver_module); iio_device_put(chan->indio_dev); chan++; } -- 2.7.4