Received: by 10.213.65.68 with SMTP id h4csp605385imn; Tue, 27 Mar 2018 05:36:23 -0700 (PDT) X-Google-Smtp-Source: AIpwx496Eay1KJD+AuYudqGph+ZVc/8LVBbv7pbSb8xn0t7qZHXc0EsKYscK4XRIS4hvrqtZ5ebz X-Received: by 2002:a17:902:3e5:: with SMTP id d92-v6mr10402393pld.104.1522154183568; Tue, 27 Mar 2018 05:36:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522154183; cv=none; d=google.com; s=arc-20160816; b=o13RianxvUdj7TjgVfxD3lkI2L+hVPQrvLY9RdYLCSelJuJYd0TkuzujWambBaOMzT 0J1A1SArKWWtht+9oQloqDqZygcwFjwnkQ5ZXYe2DJUXEaQ/azIOSHNs5YNH5tu2frUy yiancSmHgeJxBOyu3BRudcze5LFB1MwAMY9E4nhqAnYN+LCty1mnaR5WnDscosiDzsb/ MwVnWUUbF6TdFnCKYV5+BJGdhHLbUoQt+F4AiXq4qePhQcDAqpNTBaXsbY6aAJUcXMCB waW7UNl8lvYen9+LEygPzgey36kHNoHNwc38MhMQEAn+sjQu+cgF1QwvxIxpkscTuHx0 pvhQ== 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=tOOqRM5tX+zGDy/m9ulqY/lObm6enEL9QSsi+TyNtAueMA7g3v52wRyoPWku/+f3tC gDc9lPXjH2wnW+rlb9guaRLTb1fz6w/JO60S73upx5+t2LHtDxKJhBfOITc154pAHX7p LwFsR/IqvdCDoxpo5PVAZXuO0fkHhbvcukYb0asqdDt7QZxOYPI+IXEKDNMG8km8vU4C oIDcSrlMum8AV2A7sXiYLlJaPzxIIEAY0bZZL0CIlQmjc0dpWLnDcgQaBtTU4xie26WW vx3o5bRndFbdubb9BY7/qwcxvUVdTbVFUAHp1qn/dtC91KybYdffADXmuAiDFxtxY4mg vQ8Q== 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 e133si856879pfh.410.2018.03.27.05.36.09; Tue, 27 Mar 2018 05:36:23 -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 S1752290AbeC0Me5 (ORCPT + 99 others); Tue, 27 Mar 2018 08:34:57 -0400 Received: from esa5.microchip.iphmx.com ([216.71.150.166]:53241 "EHLO esa5.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751349AbeC0Mey (ORCPT ); Tue, 27 Mar 2018 08:34:54 -0400 X-IronPort-AV: E=Sophos;i="5.48,367,1517900400"; d="scan'208";a="10562905" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 27 Mar 2018 05:34:53 -0700 Received: from eh-station.microchip.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, 27 Mar 2018 05:34:51 -0700 From: Eugen Hristev To: , , , , , , , , , CC: Eugen Hristev Subject: [PATCH v2 04/10] iio: inkern: add module put/get on iio dev module when requesting channels Date: Tue, 27 Mar 2018 15:32:37 +0300 Message-ID: <1522153963-1121-5-git-send-email-eugen.hristev@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1522153963-1121-1-git-send-email-eugen.hristev@microchip.com> References: <1522153963-1121-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