Received: by 2002:ac0:da4c:0:0:0:0:0 with SMTP id a12csp269004imi; Wed, 20 Jul 2022 23:36:24 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uNwceE2+aMrlq0FEJZC4TJWrseiQMV6rISB1sTBIbc+qm1QopjTgPEk3OJgPGG6hOta6NX X-Received: by 2002:a17:907:2bc6:b0:72e:ceea:862b with SMTP id gv6-20020a1709072bc600b0072eceea862bmr36837433ejc.134.1658385384756; Wed, 20 Jul 2022 23:36:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658385384; cv=none; d=google.com; s=arc-20160816; b=e9VdYcx7Wj6BHSDGAZB7Go5l4MnceO6KeicvQSAKqV68ttq6tY4O6FbLucVwplujVX xsy6q7CzyxmYYcnKAZpK3O954HeKU+3Y7H1OeOrrbJmTq1mH1xR2tqK/yrQrlKWcW5YU y7eD91ID6DkhlPjuVs7TCiUAK4VPXwPH9QWGM8cwy76nD9+iczvRcwqgIc/7DlRzxa5g S9w8dEgpT7HL0q9Lvmtmtvgag273bbO7xIxOBHZYHadoDlwg4R0Rv2qvF27yYgVi8tHo UuepBsy96CLQ14/7X0NFroZOfZ5faSUIK/QW1EC857Wcu0/SEsIs3ytGTztHw0F8g1wN D9tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=IYoQxNSTNPsHjHHdnVSJTy6XvsIdkgtZZ+m+9kxdaVU=; b=C9UkS5TAi0U6i5DK/Mg20M2qURefeC1ACJVaPcnJzY3vLw6wd6oPhaU7G8dzlBG+To rQ24kIc2yiOiVCTKSEFMu+yKM4+Y3WjcI5DyxL/qsRHvnrxe5xQTDNGb65nxI39MKqXN uKt/ce7uYgz0t1rC5eZbmvQETBkUVvFKMf5kOIqiT0kmxbLymkhrbOuwfRIseNaiatZt iOO3sSptb+HrgbZURgqQXfMDgZ0dJiyGYaGuii0H8ot2TDuR2YkpLThAvSOFcaLrjYww TAIueoAfd7/YFltILmQxeD7FeqAx8d/mqfn4xcJcPOHHWWITN1a6XFclZc6UujGKg8gc TNhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=cZTmE+yy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i5-20020a1709064fc500b00711dc331bfasi1674442ejw.765.2022.07.20.23.35.59; Wed, 20 Jul 2022 23:36:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=cZTmE+yy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232296AbiGUGa6 (ORCPT + 99 others); Thu, 21 Jul 2022 02:30:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49898 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231262AbiGUGa4 (ORCPT ); Thu, 21 Jul 2022 02:30:56 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5440C3FA25 for ; Wed, 20 Jul 2022 23:30:55 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id t1so1234180lft.8 for ; Wed, 20 Jul 2022 23:30:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IYoQxNSTNPsHjHHdnVSJTy6XvsIdkgtZZ+m+9kxdaVU=; b=cZTmE+yyZgkjRauw/z93i+eKr30+XFGJf4rOsbFIOkshDTO7DtT6DgMU1FfySEgVZ4 8tcRWKJXfXdsE8ND0zp0iQcQSqDDQBRnGm3IUm/+0CTLKKxFRjAGEEMDftVCqoLiHDKz JbQCZRl2mvkzBVXQZYKO+7jcUFAfzihTz/sz4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IYoQxNSTNPsHjHHdnVSJTy6XvsIdkgtZZ+m+9kxdaVU=; b=2bsDNVy8kSU2kHdjfMVsVAolmq4sR1lhXxVn+z1oOyeMXTz5UbSWcAs3IpjowWzWVN LkalKltGlmNpF+N4QDC/+sJZNOB53z6TdLGLjm5i3WH+BQ9LGlTFEDON3PBeOwBVQDX2 ef1TlByO7+Ll/exn+srEauDgvTbCNZI1nkvCzPLS3ndAqhO41o/StrW8Mfg9pj4CT2vE aqw/GJFplV10ryOU1K2HltShaweLG1a68wMZOEPTP3gWAQbmW7r73BKUGt4dOdQsxyYW QMz5JQDbViI4fufNQsJbxnApvUTuPC0wWVlgkVnWeJLVRzAhbdn4oUWDYc//x0HdTvCa aMcw== X-Gm-Message-State: AJIora+SK/GD4AF+zRaX7J85HOaqabA5R21uA0K+PEi0UR0VvMikQuti jxZU21Glfl9iNe1+TQ3ziqqkkqLxdSiI8aKe4Y29J6iXjqtdjA== X-Received: by 2002:a05:6512:1389:b0:489:d0bb:241e with SMTP id p9-20020a056512138900b00489d0bb241emr22781346lfa.536.1658385053417; Wed, 20 Jul 2022 23:30:53 -0700 (PDT) MIME-Version: 1.0 References: <20220715072951.859586-1-dario.binacchi@amarulasolutions.com> In-Reply-To: From: Dario Binacchi Date: Thu, 21 Jul 2022 08:30:41 +0200 Message-ID: Subject: Re: [PATCH v3] can: slcan: do not sleep with a spin lock held To: Souptick Joarder Cc: linux-kernel@vger.kernel.org, ltp@lists.linux.it, Jeroen Hofstee , kbuild test robot , Richard Palethorpe , kernel test robot , lkp@lists.01.org, Jiri Slaby , Linux Memory Management List , "David S. Miller" , Eric Dumazet , Greg Kroah-Hartman , Jakub Kicinski , Marc Kleine-Budde , Paolo Abeni , Sebastian Andrzej Siewior , Vincent Mailhol , Wolfgang Grandegger , linux-can@vger.kernel.org, netdev@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Souptick, On Thu, Jul 21, 2022 at 3:58 AM Souptick Joarder wrote: > > On Fri, Jul 15, 2022 at 1:00 PM Dario Binacchi > wrote: > > > > We can't call close_candev() with a spin lock held, so release the lock > > before calling it. After calling close_candev(), we can update the > > fields of the private `struct can_priv' without having to acquire the > > lock. > > But here we are updating private 'struct can_priv' before close_candev() while > taking the lock. If we go by change logs, then spin_unlock_bh() need to called > before close_candev() and we can update the private 'struct can_priv' > in existing place. sl-> rcount and sl-> xleft are not part of 'struct can_priv' and can be reset after calling netif_stop_queu() because it inhibits any serial reception/transmission. Thanks and regards, Dario > > > > > Fixes: c4e54b063f42f ("can: slcan: use CAN network device driver API") > > Reported-by: kernel test robot > > Link: https://lore.kernel.org/linux-kernel/Ysrf1Yc5DaRGN1WE@xsang-OptiPlex-9020/ > > Signed-off-by: Dario Binacchi > > > > --- > > > > Changes in v3: > > - Update the commit message. > > - Reset sl->rcount and sl->xleft before releasing the spin lock. > > > > Changes in v2: > > - Release the lock just before calling the close_candev(). > > > > drivers/net/can/slcan/slcan-core.c | 7 +++---- > > 1 file changed, 3 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slcan-core.c > > index 54d29a410ad5..d40ddc596596 100644 > > --- a/drivers/net/can/slcan/slcan-core.c > > +++ b/drivers/net/can/slcan/slcan-core.c > > @@ -689,15 +689,14 @@ static int slc_close(struct net_device *dev) > > clear_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags); > > } > > netif_stop_queue(dev); > > + sl->rcount = 0; > > + sl->xleft = 0; > > + spin_unlock_bh(&sl->lock); > > close_candev(dev); > > sl->can.state = CAN_STATE_STOPPED; > > if (sl->can.bittiming.bitrate == CAN_BITRATE_UNKNOWN) > > sl->can.bittiming.bitrate = CAN_BITRATE_UNSET; > > > > - sl->rcount = 0; > > - sl->xleft = 0; > > - spin_unlock_bh(&sl->lock); > > - > > return 0; > > } > > > > -- > > 2.32.0 > > > > -- Dario Binacchi Embedded Linux Developer dario.binacchi@amarulasolutions.com __________________________________ Amarula Solutions SRL Via Le Canevare 30, 31100 Treviso, Veneto, IT T. +39 042 243 5310 info@amarulasolutions.com www.amarulasolutions.com