lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 18 Dec 2020 15:07:52 +0000 From: Michael Kelley <mikelley@...rosoft.com> To: "Andrea Parri (Microsoft)" <parri.andrea@...il.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "linux-hyperv@...r.kernel.org" <linux-hyperv@...r.kernel.org> CC: KY Srinivasan <kys@...rosoft.com>, Haiyang Zhang <haiyangz@...rosoft.com>, Stephen Hemminger <sthemmin@...rosoft.com>, Wei Liu <wei.liu@...nel.org>, Dexuan Cui <decui@...rosoft.com>, Saruhan Karademir <skarade@...rosoft.com>, Juan Vazquez <juvazq@...rosoft.com>, "James E.J. Bottomley" <jejb@...ux.ibm.com>, "Martin K. Petersen" <martin.petersen@...cle.com>, "linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org> Subject: RE: [PATCH 1/3] scsi: storvsc: Fix max_outstanding_req_per_channel for Win8 and newer From: Andrea Parri (Microsoft) <parri.andrea@...il.com> Sent: Thursday, December 17, 2020 12:33 PM > > Current code overestimates the value of max_outstanding_req_per_channel > for Win8 and newer hosts, since vmscsi_size_delta is set to the initial > value of sizeof(vmscsi_win8_extension) rather than zero. This may lead > to wrong decisions when using ring_avail_percent_lowater equals to zero. > The estimate of max_outstanding_req_per_channel is 'exact' for Win7 and > older hosts. A better choice, keeping the algorithm for the estimation > simple, is to err the other way around, i.e., to underestimate for Win7 > and older but to use the exact value for Win8 and newer. > > Suggested-by: Dexuan Cui <decui@...rosoft.com> > Signed-off-by: Andrea Parri (Microsoft) <parri.andrea@...il.com> > Cc: "James E.J. Bottomley" <jejb@...ux.ibm.com> > Cc: "Martin K. Petersen" <martin.petersen@...cle.com> > Cc: linux-scsi@...r.kernel.org > --- > drivers/scsi/storvsc_drv.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index ded00a89bfc4e..64298aa2f151e 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -2141,12 +2141,15 @@ static int __init storvsc_drv_init(void) > * than the ring buffer size since that page is reserved for > * the ring buffer indices) by the max request size (which is > * vmbus_channel_packet_multipage_buffer + struct vstor_packet + u64) > + * > + * The computation underestimates max_outstanding_req_per_channel > + * for Win7 and older hosts because it does not take into account > + * the vmscsi_size_delta correction to the max request size. > */ > max_outstanding_req_per_channel = > ((storvsc_ringbuffer_size - PAGE_SIZE) / > ALIGN(MAX_MULTIPAGE_BUFFER_PACKET + > - sizeof(struct vstor_packet) + sizeof(u64) - > - vmscsi_size_delta, > + sizeof(struct vstor_packet) + sizeof(u64), > sizeof(u64))); > > #if IS_ENABLED(CONFIG_SCSI_FC_ATTRS) > -- > 2.25.1 Reviewed-by: Michael Kelley <mikelley@...rosoft.com>
Powered by blists - more mailing lists