Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp2260838imw; Wed, 6 Jul 2022 02:55:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vIG08pE+LdzF0cAQ+axZGr4leSt/N7SyOUCVNJQFgPGqx65cP5YBJZm3qn7Ap/aADMJOlM X-Received: by 2002:a62:fb02:0:b0:528:6697:eaaf with SMTP id x2-20020a62fb02000000b005286697eaafmr16307474pfm.75.1657101352954; Wed, 06 Jul 2022 02:55:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657101352; cv=none; d=google.com; s=arc-20160816; b=qIuNUDZGUPJHI6IpzEyfJ+W8N3KWbjMFNS+5LGwa/a4TyfZWOequlWAtU1F8QZTQgl 2X02NFlSpacMms78e5FCDwh5erzT5WOVMRD8saDHccP1lmXzfvF8DSflqKdD9jKoiIOU n4W5Rkjm3gecOWfCCZCybsYNB0/tD7RNBgYTZSuUAgTB1ZKdDBAhPBmFwRuYkGl2uOky rSWg46QuOR/sLCdMK3vhvqCyI6GX6jx65jgkMCK1X6Gzn/kxLER1YlYPs8AB1uKnVsoF Hh6zqY+/1eVtrNwj0HNrF98ZkWmpsJ2BjZYorydYF7QwvNIZNdiiYiRupuJjz2F8nnJm Jy/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature:dkim-filter; bh=nqWFIU1UiRFLTOpHJIOQKgm3cC14TJ1i84bjg1AGMUQ=; b=u/l37AGgmZigzTe0APrZg1S+ludxndNMcu7mNeccFxFPtQCu13g0vmVFDkkf/QHpZ3 Jr+ttE/MpwopDuXcVC1XmJw5VW1yvW2hC//o32alP6392IlGfRDnFNXxie+Vwr1erV6m 4WHXCkmsKu7MXCmkrn/UMHvJyvlz41TuuK9LC3DaM5Dcii2QaBlZugqT0TfCXhpxMpsF ClUs5UK8BoDAmRWeAp4iyFAcAf2V1Da7pJ9qQdRY+nUTYrD52jTD27jIgX2PsQvLfvfi fSw/EAES+Mic4H4awFIhhxPX9WshJ6/e5d5Y8QeK53MFIRJ0MRM1i+1EzQilapf3mVPY aJNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=KBDbzW9J; 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=linux.microsoft.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q18-20020a656252000000b004129fb23352si1334197pgv.271.2022.07.06.02.55.41; Wed, 06 Jul 2022 02:55:52 -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=@linux.microsoft.com header.s=default header.b=KBDbzW9J; 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=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232494AbiGFJzJ (ORCPT + 99 others); Wed, 6 Jul 2022 05:55:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232444AbiGFJyC (ORCPT ); Wed, 6 Jul 2022 05:54:02 -0400 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id BA58824F02; Wed, 6 Jul 2022 02:53:58 -0700 (PDT) Received: by linux.microsoft.com (Postfix, from userid 1127) id 7098020DDCC6; Wed, 6 Jul 2022 02:53:58 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 7098020DDCC6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1657101238; bh=nqWFIU1UiRFLTOpHJIOQKgm3cC14TJ1i84bjg1AGMUQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KBDbzW9JfJw0HvDn0Ey1qx6FMF/Bd0qdu1ll02ZueIe9HzHVzzCII+Vgxpy577IXI 3HK6hg00b3wcconubFbLgJ2kEB2l+qnzPSOoob9N/1ryz2TfjejHyf3IW3Ze5D/t1J AjezB/Yg9xIYo+WBr+8xxXs+gbOB2wwx4EahYJhU= Date: Wed, 6 Jul 2022 02:53:58 -0700 From: Saurabh Singh Sengar To: Praveen Kumar Cc: kys@microsoft.com, haiyangz@microsoft.com, sthemmin@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, jejb@linux.ibm.com, martin.petersen@oracle.com, linux-hyperv@vger.kernel.org, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, ssengar@microsoft.com, mikelley@microsoft.com Subject: Re: [PATCH] scsi: storvsc: Prevent running tasklet for long Message-ID: <20220706095358.GA3320@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <1657035141-2132-1-git-send-email-ssengar@linux.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-19.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=ham 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 On Wed, Jul 06, 2022 at 02:44:42PM +0530, Praveen Kumar wrote: > On 05-07-2022 21:02, Saurabh Sengar wrote: > > There can be scenarios where packets in ring buffer are continuously > > getting queued from upper layer and dequeued from storvsc interrupt > > handler, such scenarios can hold the foreach_vmbus_pkt loop (which is > > executing as a tasklet) for a long duration. Theoretically its possible > > that this loop executes forever. Add a condition to limit execution of > > this tasklet for finite amount of time to avoid such hazardous scenarios. > > > > Signed-off-by: Saurabh Sengar > > --- > > drivers/scsi/storvsc_drv.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > > index fe000da..0c428cb 100644 > > --- a/drivers/scsi/storvsc_drv.c > > +++ b/drivers/scsi/storvsc_drv.c > > @@ -60,6 +60,9 @@ > > #define VMSTOR_PROTO_VERSION_WIN8_1 VMSTOR_PROTO_VERSION(6, 0) > > #define VMSTOR_PROTO_VERSION_WIN10 VMSTOR_PROTO_VERSION(6, 2) > > > > +/* channel callback timeout in ms */ > > +#define CALLBACK_TIMEOUT 5 > > If I may, it would be good if we have the CALLBACK_TIMEOUT configurable based upon user's requirement with default value to '5'. > I assume, this value '5' fits best to the use-case which we are trying to resolve here. Thanks. Agree, how about adding a sysfs entry for this parameter > > > + > > /* Packet structure describing virtual storage requests. */ > > enum vstor_packet_operation { > > VSTOR_OPERATION_COMPLETE_IO = 1, > > @@ -1204,6 +1207,7 @@ static void storvsc_on_channel_callback(void *context) > > struct hv_device *device; > > struct storvsc_device *stor_device; > > struct Scsi_Host *shost; > > + unsigned long expire = jiffies + msecs_to_jiffies(CALLBACK_TIMEOUT); > > > > if (channel->primary_channel != NULL) > > device = channel->primary_channel->device_obj; > > @@ -1224,6 +1228,9 @@ static void storvsc_on_channel_callback(void *context) > > u32 minlen = rqst_id ? sizeof(struct vstor_packet) : > > sizeof(enum vstor_packet_operation); > > > > + if (time_after(jiffies, expire)) > > + break; > > + > > if (pktlen < minlen) { > > dev_err(&device->device, > > "Invalid pkt: id=%llu, len=%u, minlen=%u\n", > > Regards, > > ~Praveen.