Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp117282pxy; Tue, 4 May 2021 20:23:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJylPujmaiM++Kb/GGhKY1dNnHPxdbcT7TDjVRXnl8LVXknnywFdKXJCHuTN2Lw97vfrjanw X-Received: by 2002:a17:902:db01:b029:eb:36ed:36f4 with SMTP id m1-20020a170902db01b02900eb36ed36f4mr28964141plx.61.1620184995123; Tue, 04 May 2021 20:23:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620184995; cv=none; d=google.com; s=arc-20160816; b=GzTH9mSoq+/9vTjcPjQ2HbGS8ZpJ7JEXI5KdJOQDrV+mDOqQb90RauV8sHYsYPV68T SvYwDt9BNAx7hp2YSUkepS8kIQ+npO4e/0KnV5DkwsN8eEVmHcyOHvO0FDZ6kfhNn79j Z1pkgqy8bWhdb25x1sMWrnL4vdhzU0Ge3Odco594OqIb3fR/GibTIku/AJD9FO4hcz/S lFzruk7HFd40UgEYaHmkmC6bnd0d0hjpSPilPUqRsOmlqVezxG+DH9zMOa5vHM+YpHI6 HZizGHw8+xopXc8TRHQLA98zjeRY3FMDjwxUlB5EW9tLkPVfsKsXcYNNyO9IE9HODJd1 oHYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=6FMbAN7t12G/Juix+b9gMTv2kzO3C2P3Q5jEJeo40h4=; b=QLTnZDSj3YToHFzouGoGzHMi2QGxiXFdJQL+0yL4ujb7oOuFGkl0eS6Wlmw2CNkWay R8aRM9QAECWmzKgHgbNMMioE3kc3uqbch9UaTL3c/0jjf+KFQ3holzXGGss37L0S+0+t IYtG7S6PfRr8/lZ+aS3zGLETNCnWv4GNhON/DmY7G+nrmori/5T9i0Yr0tDRI0rJJkCN bsOsJKJUANETevYeJrsa513Hw6+2ntOuBPzr03xAF4yUvq9Fn0xpsI0jE3927s81bvPR NKC38HYwyWqIbHZurFGpQXOYy7qbQSUEfFuEGOfGvsMqNKwqYenc1iBSJQpDp1W57Bo4 aTaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RHKxy0nz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i23si20317395pfr.315.2021.05.04.20.22.50; Tue, 04 May 2021 20:23:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RHKxy0nz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230361AbhEEDPU (ORCPT + 99 others); Tue, 4 May 2021 23:15:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229617AbhEEDPT (ORCPT ); Tue, 4 May 2021 23:15:19 -0400 Received: from mail-qk1-x74a.google.com (mail-qk1-x74a.google.com [IPv6:2607:f8b0:4864:20::74a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7DC9C06174A for ; Tue, 4 May 2021 20:14:23 -0700 (PDT) Received: by mail-qk1-x74a.google.com with SMTP id s123-20020a3777810000b02902e9adec2313so255649qkc.4 for ; Tue, 04 May 2021 20:14:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=6FMbAN7t12G/Juix+b9gMTv2kzO3C2P3Q5jEJeo40h4=; b=RHKxy0nzZMKiiaUNg6+cDehHN1wDU7unHEmn9ng1SCsYUPc5cgsHrvLITgnMZ1z4KW Xxg6wWzJHuuNnH8Z8YgFLdgnR9usVQNw94dFxzmTppUq2f2QRHago0bOsPsGuIPpU1Jh LDz/07RjTFR73vDyiU2iBzST+K6dUns+UGNRnOrEGy3Ho0Y07Z2FeFNC60eBbmo5hShK OxTnwzCMwmYS/i06DGdcQ943ZH/38mYOm1S3137p6HcT+KOpEjT+eEct4p1gcKjUtIV6 /6o0VO0lhc7yP1W4RLwDNzYt6Wdotd4KnpEI7n8ZtnNAoWkcz8iyhjYM1733toOiVMLi f+7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=6FMbAN7t12G/Juix+b9gMTv2kzO3C2P3Q5jEJeo40h4=; b=K9vx6T2QMMdyYz5Kspx/lA0tG0il9H6fnuXcBJXFZD8rdJh6ql7GM6SA4OrzFM+cq1 5YR/TFpVfFCrtHgP0jJAI7b5u+ymzf65YN1ltpA1CidM7K+PV/4j4eY+pQNzwf+ggG5M /wcjHbF4gEJbHfH/Sv8xgdIxzMEDmSg+Mh2fxmxRjPOGXFI5kKw3mS36Bigw//ZYiwIb PkOgEl/jL/RbYGgBTDz5G1ESYu0wmXDlF9ZUIa2dfKT8Y4Jylccbxp2bWF8+am9kw0pg 5nIXJ/+v6K4dqORJPlHcBtZ+sVj/fQX+HUlZPZi1lME50PtjiIJR216VXjas27OUCYQ1 zsbw== X-Gm-Message-State: AOAM530fd7CBuA9/ZHw2swEpQ6QDHfeIhbDtJU1bWqiR+nmJDpDdKBq5 7XltwGjxqzYZ0AkyOQR7EZoNym3GPixjKws= X-Received: from saravanak.san.corp.google.com ([2620:15c:2d:3:423c:41e9:e02e:706e]) (user=saravanak job=sendgmr) by 2002:a05:6214:583:: with SMTP id bx3mr19001972qvb.38.1620184462756; Tue, 04 May 2021 20:14:22 -0700 (PDT) Date: Tue, 4 May 2021 20:14:16 -0700 Message-Id: <20210505031416.30128-1-saravanak@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.1.527.g47e6f16901-goog Subject: [PATCH v1] spi: Don't have controller clean up spi device before driver unbind From: Saravana Kannan To: Mark Brown , Saravana Kannan Cc: Lukas Wunner , kernel-team@android.com, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When a spi device is unregistered and triggers a driver unbind, the driver might need to access the spi device. So, don't have the controller clean up the spi device before the driver is unbound. Clean up the spi device after the driver is unbound. Fixes: c7299fea6769 ("spi: Fix spi device unregister flow") Reported-by: Lukas Wunner Signed-off-by: Saravana Kannan --- Lukas, Can you test this out please? Thanks, Saravana drivers/spi/spi.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 2350d131871b..b856f4a1e3a4 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -401,6 +401,12 @@ static int spi_probe(struct device *dev) return ret; } +static void spi_cleanup(struct spi_device *spi) +{ + if (spi->controller->cleanup) + spi->controller->cleanup(spi); +} + static int spi_remove(struct device *dev) { const struct spi_driver *sdrv = to_spi_driver(dev->driver); @@ -415,6 +421,7 @@ static int spi_remove(struct device *dev) ERR_PTR(ret)); } + spi_cleanup(to_spi_device(dev)); dev_pm_domain_detach(dev, true); return 0; @@ -554,12 +561,6 @@ static int spi_dev_check(struct device *dev, void *data) return 0; } -static void spi_cleanup(struct spi_device *spi) -{ - if (spi->controller->cleanup) - spi->controller->cleanup(spi); -} - /** * spi_add_device - Add spi_device allocated with spi_alloc_device * @spi: spi_device to register @@ -714,8 +715,6 @@ void spi_unregister_device(struct spi_device *spi) if (!spi) return; - spi_cleanup(spi); - if (spi->dev.of_node) { of_node_clear_flag(spi->dev.of_node, OF_POPULATED); of_node_put(spi->dev.of_node); -- 2.31.1.527.g47e6f16901-goog