From patchwork Tue Feb 27 11:34:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Herve Codina X-Patchwork-Id: 21014 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2635112dyb; Tue, 27 Feb 2024 03:35:25 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVUpRTtfOpR92U40E9gAK0573JGFuUfemCFbixdABc9ZjiIADdis0pClzvcMJjpu3A7OH4Sso61u8IrKulGLbLXjel5XQ== X-Google-Smtp-Source: AGHT+IH8sRzJt4+ONbc0hGdrdcUFSuyFPJUszpxBe8RaLwiYReuGPkbtlFNc35l5nvGH7vURspMk X-Received: by 2002:a0c:da88:0:b0:68f:2a5e:4fa5 with SMTP id z8-20020a0cda88000000b0068f2a5e4fa5mr1545997qvj.11.1709033725257; Tue, 27 Feb 2024 03:35:25 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709033725; cv=pass; d=google.com; s=arc-20160816; b=SIPyD+ERqduOCV9B84Nd5NBbSzDx+TNOWvlnd7GJLbkiCjEiHgCbyyCToyIOIgzT/8 U5rLQg5QUdBLQd2kSL8/hCjy0x5KXUQ1REo5uHqForL3V3X4LN3iVpzcUHPsmEeR34ZN Y2hBK+71BdD2igAlupPIzMoK9X69MWPIP2hi8yMyBpEOjXJ7wAnNAo8i/vT4ZpPFVoLV wFub+uLeE6U1erdJSorL8V2grmdXMh1CYZsC44jWwbP93CynTN5M4upFLRLU3qChGSQs RcjH1Ko4olk/ewGd5djMxG7m2+B+lI89NbcyrBBTUDtVkFAeCOpN4zW81e1gwKwd5ba5 p32A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=QhfBBpBWQgyBYkE4IR+OyuoUGnqKUWopm8WIsqzfqQc=; fh=ONUZ3m01L0DVQm+Cjotv2dXDuBgIcWiaHC6/g+ZSH6Y=; b=F0H0lKVKFlL/bCqHGX8oP3uc5Qv7heAVydk4Ibq9rWUhGCD4HI+wlDFAJN3HQAdY+E Fc7ETolXORgqtJr1En8EqLKl9D3oml8ibpHMUMKLr496P/8QFxrEz4DL8qyn34ZJ3r3b aR9sKBaB9am8jhfYkNC10I2y7hreust2ev96jRhVzpn2QZ9PvtSefNDAR4HDLP0L5Cha FGtpU8SIE/hB1PCuimLBza4Cxy5I4rTZNZXYCKVZM+MO+5tBoS9nZbCOPJrrIAEtNdOE mZm9d054CLZ4YEYXnQoyqm0g/lGM2Yd2cRx4beVW6mq3A4LqXxfZmV5b2WVH98kvE2Ny UK7A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=Rvney9wi; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-83130-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-83130-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id r12-20020a056214212c00b0068f3ecd0f6csi7207154qvc.104.2024.02.27.03.35.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 03:35:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-83130-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=Rvney9wi; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-83130-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-83130-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9AAA61C22991 for ; Tue, 27 Feb 2024 11:35:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A41C613A884; Tue, 27 Feb 2024 11:34:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="Rvney9wi" Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A007555E63; Tue, 27 Feb 2024 11:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709033682; cv=none; b=HccO9634FUWqHGePI75+Dl5fKIFUDsG1fHdiBwdVGFZ4qqvnQWVqAiLwnCuKv+dIIG35b5YXW+SnScWXY2fjqjV/dXrNQkOJyGTDPvUsDZm/zL3fhc0iv1mvHlqHNrN+gdOWxHAsbI6LyANgYTgRqGNgQKaHU0hgqqoLYht4NwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709033682; c=relaxed/simple; bh=Pl6RzP7eVBM1SX/LSO8FN5EW7VXMT3LIJ50I1lG39SI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=sYH2ttn9WJoxTCkThHOSTzfBa8F0OtbDTSy+AwLGGjkxYnuZPV42UH5BABPblL2UFNF0zmwjy31iM3rrSJ/qpanp7hqR5JJpKFQU4C86SpXJLVGQGdhGR4PJfdN9s+mYquniZabuvffJ9CNVkdFRnbXxCg0HSQRBK2CQF8e0BQY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=Rvney9wi; arc=none smtp.client-ip=217.70.183.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPA id 3641F1C0004; Tue, 27 Feb 2024 11:34:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1709033672; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QhfBBpBWQgyBYkE4IR+OyuoUGnqKUWopm8WIsqzfqQc=; b=Rvney9wiUF3QWebEBIP7qQyiOEdbTsvbj6jXvyFjQ8bOFtWX5pwGMFIuLdr+0MDFdq+5H5 HAbm9mBPeLjAH/7YozPDy+6IehJINT0b9dF02C7FqjIhM4asE8h+RUHfN06OoWSg9pymY7 NZQP+GfI/5PrSA2GWEq6Yy6teb24vJTOOyXl8XbgS5I4B2gKKLlNHr/Vl8rHnGBt1897An O0Jxiu0TcJTYcCtuzQ33fT8IctA3ux8fELGixbtdtzdmKuy/0WR83tipvBHvwMjEBYfFOH gPc4katisPQdZmH06sJ6Tnj9+vJqpyWjoiL+wSfvpAOTYUPB0BgIiNj5TjA9lA== From: Herve Codina To: Bartosz Golaszewski , Kent Gibson , Linus Walleij Cc: Saravana Kannan , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Luca Ceresoli , Thomas Petazzoni , Herve Codina Subject: [PATCH v2 0/2] gpio-cdev: Release IRQ used by gpio-cdev on gpio chip removal Date: Tue, 27 Feb 2024 12:34:23 +0100 Message-ID: <20240227113426.253232-1-herve.codina@bootlin.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-GND-Sasl: herve.codina@bootlin.com X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792051747279758556 X-GMAIL-MSGID: 1792051747279758556 Hi, When a gpio chip device is removed while some related gpio are used by the user-space (gpiomon for instance), the following warning can appear: remove_proc_entry: removing non-empty directory 'irq/233', leaking at least 'gpiomon' WARNING: CPU: 2 PID: 72 at fs/proc/generic.c:717 remove_proc_entry+0x190/0x19c ... Call trace: remove_proc_entry+0x190/0x19c unregister_irq_proc+0xd0/0x104 free_desc+0x4c/0xc4 irq_free_descs+0x6c/0x90 irq_dispose_mapping+0x104/0x14c gpiochip_irqchip_remove+0xcc/0x1a4 gpiochip_remove+0x48/0x100 ... Indeed, even if the gpio removal is notified to the gpio-cdev, the IRQ used is not released when it should be. This series calls the gpio removal notifier sooner in the removal process in order to give a chance to a notifier function to release the IRQ before releasing the IRQ mapping and adds the needed operations to release the IRQ in the gpio cdev notifier function. Compared to the previous iteration: https://lore.kernel.org/linux-kernel/20240220111019.133697-1-herve.codina@bootlin.com/ this v2 series set gdev->chip to NULL before calling gcdev_unregister(). Also, this v2 series was rebased on top of for-next branch of the GPIO tree. Best regards, Hervé Codina Changes v1 -> v2: - Patch 1 Set gdev->chip to NULL before calling gcdev_unregister() - Patch 2 No changes Herve Codina (2): gpiolib: call gcdev_unregister() sooner in the removal operations gpiolib: cdev: release IRQs when the gpio chip device is removed drivers/gpio/gpiolib-cdev.c | 33 ++++++++++++++++++++++----------- drivers/gpio/gpiolib.c | 6 +++++- 2 files changed, 27 insertions(+), 12 deletions(-)