Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1448868ybb; Thu, 9 Apr 2020 02:18:09 -0700 (PDT) X-Google-Smtp-Source: APiQypKUrZSyb7rkS1QG5v/q7Oltqy9He4c/l0sRhh2LuAGSCHT31D30Ru6OSLuTNRHcPkEfLLMP X-Received: by 2002:a05:6830:15d4:: with SMTP id j20mr3061592otr.303.1586423889496; Thu, 09 Apr 2020 02:18:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586423889; cv=none; d=google.com; s=arc-20160816; b=J0GfBqfQ2KGLyklPIa5zQ241nhKSlb7wvAMQC0t1t8BYULEOBF5T6wvSJ1lf4LijYg iWLvxTS3d9xhAvEiHDDMpW/7vkDxGIUd1bNpMlZkkIV1p3tZhCdmrfCJ2gcsDswEu/0/ gQAV+RFeskBDPcYli7bdy9tCcfFsYtNvByOr8FO8NLVQA8rQzpDd1ynWrkLxRTJYYD6J XwR+sJFgcGr4nKae4m2btX6gQihilBKfgN33N1xl04LW5ANGQuWuhbIk0/sXpNfolrTt 56fFPNecL9L0SLBfujXdjKtzIOoQilbEJHw9J6cH58YKHIBPaMRKOaA/OPTKzB2i7eED sTqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=XhJNMYr8rCn6Ps4xNzsGMIHfK2snlVBwMXyeL+ZX+VM=; b=YnRpRjFnhRJOwDJnhaPYdSkaNSepAG4h16nngGfOEo4mrXQDgAMWLtWBjfkRsd2rNO t86FlicXF/7impuXhnjfZKiApEYnAqlm3GJrPPDTVe6lcphOVPJ63ZQaZjEFvTMqFPew LOhA3xwbn+ZQniim3JIHqvULKcSLv5mFdy7aLLdx6gKqlVAmPF6q3GVrPb/QjjUsgc4/ ruUqsBUIudBp3LrC8ap6Jg8DnEGKxbWg6zQ8gL/pSKMeMYFeEI7KHX9Sh15jiD3ZB5TK hfdh/rwlLgxAGvLOvzzQy0f00ykjpDzCEsRoXkv1IBBNUTbCeSytB7MP5M3eJMAUlDd7 VD4g== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m1si3685152otn.91.2020.04.09.02.17.54; Thu, 09 Apr 2020 02:18:09 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726707AbgDIJRT (ORCPT + 99 others); Thu, 9 Apr 2020 05:17:19 -0400 Received: from inva021.nxp.com ([92.121.34.21]:58218 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725997AbgDIJRT (ORCPT ); Thu, 9 Apr 2020 05:17:19 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 9E85520039A; Thu, 9 Apr 2020 11:17:18 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id E69302003BE; Thu, 9 Apr 2020 11:17:12 +0200 (CEST) Received: from titan.ap.freescale.net (titan.ap.freescale.net [10.192.208.233]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id AD55B402E7; Thu, 9 Apr 2020 17:17:05 +0800 (SGT) From: Hui Song To: Shawn Guo , Li Yang , Rob Herring , Mark Rutland , Linus Walleij , Bartosz Golaszewski Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Song Hui Subject: [PATCH] gpio: mpc8xxx: Add shutdown function. Date: Thu, 9 Apr 2020 17:02:59 +0800 Message-Id: <20200409090259.13126-1-hui.song_1@nxp.com> X-Mailer: git-send-email 2.9.5 X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Song Hui When the kexec command is executed, the memory area will be re-paginated. The shutdown function needed to make interrupt handler to be NULL.If not, an interrupt will be generated during this period. When the interrupt handler is executed,the handler function address changed and crash will occur. Signed-off-by: Song Hui --- drivers/gpio/gpio-mpc8xxx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 604dfec..a24e6c5 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c @@ -446,9 +446,21 @@ static int mpc8xxx_remove(struct platform_device *pdev) return 0; } +static int mpc8xxx_shutdown(struct platform_device *pdev) +{ + struct mpc8xxx_gpio_chip *mpc8xxx_gc = platform_get_drvdata(pdev); + + if (mpc8xxx_gc->irq) { + irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, NULL, NULL); + irq_domain_remove(mpc8xxx_gc->irq); + } + + return 0; +} static struct platform_driver mpc8xxx_plat_driver = { .probe = mpc8xxx_probe, .remove = mpc8xxx_remove, + .shutdown = mpc8xxx_shutdown, .driver = { .name = "gpio-mpc8xxx", .of_match_table = mpc8xxx_gpio_ids, -- 2.9.5