Received: by 10.192.165.156 with SMTP id m28csp415776imm; Tue, 17 Apr 2018 12:20:47 -0700 (PDT) X-Google-Smtp-Source: AIpwx499Xp1Xnb68Gmj8QxwdudT9B0MP3L0Asm1tzCtjOPeC8XvRULPkXHDpAppgY1U2871nGGFU X-Received: by 2002:a17:902:b903:: with SMTP id bf3-v6mr3112425plb.37.1523992847584; Tue, 17 Apr 2018 12:20:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523992847; cv=none; d=google.com; s=arc-20160816; b=o3BwvFtXy9P9hNsEUIsuhyjTfFeDl9MXE6sz1SkY1kf9N/V3/ngmF0MSuz7Ru0qXF5 /M6OlEPUDgAZ6gE42JpdA4DtCmBGuseH8/VIHMPJ4P2p0B7iWVNGpUlu2p3p3AoOvvq3 uW/SNPi6RSiMs5C4dAQLStEzGHS+aATtRgeRmNF2vpO+HWD4Xtuu5QjgdQ5icEac/ZsC Jo/AEyOstIovi4cXwOOj4D/CTadopd3JqDAXEfhXE7CuvVz6/5DITLoRcZEU3TM1ypLu oebNFgqE8S4yq6TO8dgEqY+FHi60g1sOnmOOhTgLP4tLBdb9QwDASUyeZt+RLMXBmv3w DHFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=+f3ES9MdTVaUob17uyKef7+xqiLxWL8PKax26IQuz2A=; b=GRRWfHY7qVsIUoNRd/7+FSRPy3Iw2Xms7wL5e+TQ54MAUnx65wHpjo39okfot/gOuE nUuL2hUpzaWDpEZK+AI3+uKj6Y8qzDlZkwJPjmNrqsHjCIqcixh6wPHYa96GPM4BTsCK BjH3YPxHdlkxNJF9pTFtuKt4Jpo8D4Q9Q2pqQgXxzE1z64g7p/w8IcydfzMSIDwFuvnB Ysd9lHTovSe3DX6lqmPgnmwDHqYFQKA56f3oAzI+7r5952fQUiQOvR8H+ECqDJk+m19C zHLhK66jLZxjZ1Z55WtFROAbo2rhDrHyPj4jIGFTj4F6nI1ifr27N9gWk3Ti1oliYmGe s4FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZZnR3jlB; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w14si10991006pgo.154.2018.04.17.12.20.33; Tue, 17 Apr 2018 12:20:47 -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=@gmail.com header.s=20161025 header.b=ZZnR3jlB; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753001AbeDQTTN (ORCPT + 99 others); Tue, 17 Apr 2018 15:19:13 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:41316 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752944AbeDQTTJ (ORCPT ); Tue, 17 Apr 2018 15:19:09 -0400 Received: by mail-pl0-f68.google.com with SMTP id bj1-v6so12521105plb.8; Tue, 17 Apr 2018 12:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=+f3ES9MdTVaUob17uyKef7+xqiLxWL8PKax26IQuz2A=; b=ZZnR3jlBN9NYcf2nzQ45j5lLgvANRZul1FNWbwkzv4KOL32OhnMMGEb5wlKJPUxHuV k/6cit09e8wuAiJ3M1CmVGXQn5O1FnWLLDJRMQsBeqlzrvCCCMUBnqp47AURbCJnO+45 RxGMLuaG2KDNoNeMR60RTZYg+UASyyuHxIm9Hhbuj2O0Nm1YAa9zWgMhotMPOSpiO+jJ /vYBqcPpUIOYuiZXfXcuqURVCKcNgNFOcmb4Y3Suo9dE16pEUUkcYXNU+zWTO6P/g+qw q8ha/ptmPQrcQeQaOBGk+LFqUVZ6w9E46MuLwbd7abIHUZNwWFt4BeVHmPi6x8eFgKET zJ3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=+f3ES9MdTVaUob17uyKef7+xqiLxWL8PKax26IQuz2A=; b=jGoMpHGM/vQ6fs8EdmdtJWC0NF8/sXEMLuz4WgG8JLis3z5dGn8H5LspuGCSWvHdSK 3FFlrYt6Co4SNn0Fi6QJ+NUnHHk+JVno0NuXijJ+RFv+bFYn89/cBRuTB+eJYSBY4Qu1 W0+Ku2rUwWs79NfQaUoPIV9E4F7LxnhPpjWlxzbqHymdCM4R8Yo0VOJGlEqhc2S7Ewuk 84ggPpCLR9GYdIkRJkSrfvdkEXwYNiZhR6yTLRHQ14ZreJjoqj8ub5AzkSEsBTcmYRBe D+JuV659ulJ8A//LpAAecDzyaNmyDA4aTuWsENFH5iWAGQ4xs1ICnk12Hal4IBGux9KK xDZQ== X-Gm-Message-State: ALQs6tCwcHcMlUmb8AX2s1C4i4OPs+cQc+MbvehXEPi4f8TC7yuGc1Z6 B89glHTfMw+9DYEj3q+mzxg= X-Received: by 2002:a17:902:7508:: with SMTP id i8-v6mr3093955pll.215.1523992748693; Tue, 17 Apr 2018 12:19:08 -0700 (PDT) Received: from dtor-ws ([2620:0:1000:1511:8de6:27a8:ed13:2ef5]) by smtp.gmail.com with ESMTPSA id s72sm4195461pgc.26.2018.04.17.12.19.07 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Apr 2018 12:19:08 -0700 (PDT) Date: Tue, 17 Apr 2018 12:19:06 -0700 From: Dmitry Torokhov To: Eugen Hristev Cc: Jonathan Cameron , ludovic.desroches@microchip.com, alexandre.belloni@bootlin.com, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, linux-input@vger.kernel.org, nicolas.ferre@microchip.com, robh@kernel.org Subject: Re: [PATCH v3 06/11] iio: inkern: add module put/get on iio dev module when requesting channels Message-ID: <20180417191906.GB67621@dtor-ws> References: <1523350677-27106-1-git-send-email-eugen.hristev@microchip.com> <1523350677-27106-7-git-send-email-eugen.hristev@microchip.com> <20180415203321.1aaaf91e@archlinux> <20180416235821.GF77055@dtor-ws> <67771f4c-d30c-4a28-2a9b-d5585186d60a@microchip.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <67771f4c-d30c-4a28-2a9b-d5585186d60a@microchip.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Eugen, On Tue, Apr 17, 2018 at 10:39:24AM +0300, Eugen Hristev wrote: > > > On 17.04.2018 02:58, Dmitry Torokhov wrote: > > On Sun, Apr 15, 2018 at 08:33:21PM +0100, Jonathan Cameron wrote: > > > On Tue, 10 Apr 2018 11:57:52 +0300 > > > Eugen Hristev wrote: > > > > > > > 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); > > > > > > And if it fails? (the module we are trying to get is going away...) > > > > > > We should try and handle it I think. Be it by just erroring out of here. > > > > Even more, this has nothing to do with modules. A device can go away for > > any number of reasons (we unbind it manually via sysfs, we pull the USB > > plug from the host in case it is USB-connected device, we unload I2C > > adapter for the bus device resides on, we kick underlying PCI device) > > and we should be able to handle this in some fashion. Handling errors > > from reads and ignoring garbage is one of methods. > > > > FWIW this is a NACK from me. > > > > Thanks. > Hello, > > This patch is actually a "best effort attempt" for the consumer driver > (touch driver) to get a reference to the producer of the data (the IIO > device), when it requests the specific channels. > As of this moment, there is no attempt whatsoever for the consumer to have a > reference on the producer driver. Thus, the producer can be removed at any > time, and the consumer will fail ungraciously. This is the root of the issue. The consumer should be prepared to handle errors from producer. > I can change the perspective from "best effort" to "mandatory" to get a > reference to the producer, or you wish to stop trying to get any reference > at all (remove this patch completely) ? You should take reference to the device itself (if it is not taken already), so it does not disappear completely and you can continue using IIO API to access it, and IIO API should be prepared to deal with "dead" devices, but as I pointed in my other email, trying to pin the driver is quite pointless as there are myriad other ways of device stopping working besides module unloading. In any case, I think this problem is outside of the scope of this patchset that adds a generic resistive touchscreen, so if you want to continue working on this I'd recommend moving it into a separate series. Thanks. -- Dmitry