From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cornelia Huck Subject: Re: [PATCH] virtio: Return correct errno for function init_vq's failure Date: Wed, 13 Jul 2016 14:05:40 +0200 Message-ID: <20160713140540.78c9ab01.cornelia.huck@de.ibm.com> References: <1466993358-12064-1-git-send-email-mnghuan@gmail.com> <20160706111832.5d4d6f43.cornelia.huck@de.ibm.com> <20160713115400.GA16403@MinfeideMacBook-Pro.local> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20160713115400.GA16403@MinfeideMacBook-Pro.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Minfei Huang Cc: Minfei Huang , virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, mst@redhat.com List-Id: virtualization@lists.linuxfoundation.org On Wed, 13 Jul 2016 19:54:00 +0800 Minfei Huang wrote: > On 07/06/16 at 11:18P, Cornelia Huck wrote: > > On Mon, 27 Jun 2016 10:09:18 +0800 > > Minfei Huang wrote: > > > > > The error number -ENOENT or 0 will be returned, if we can not allocate > > > more memory in function init_vq. If host can support multiple virtual > > > queues, and we fails to allocate necessary memory structures for vq, > > > kernel may crash due to incorrect returning. > > > > > > To fix it, kernel will return correct value in init_vq. > > The error handling in this function looks horrible. > > > > When mq was introduced, init_vq started mixing up several things: > > - The mq feature is not available - which is not an error, and > > therefore should not have any influence on the return code. > > - One of the several memory allocations failed - only ->vqs gets > > special treatment, however. > > - The ->find_vqs callback failed. > > Yep. And without this patch, it is silent for boot failure. I think it > makes sense to let user notify about this failure. Agreed. > > > > > Your patch fixes the code, but it is still very convoluted due to the > > temporary arrays. > > > > May it be worthwile to introduce a helper for setting up the virtqueues > > where all virtqueues are essentially the same and just get a > > consecutive number? Michael? > > > > Hmm, How about refactor this function to make it more readable, since we > do a lot of work in it. > > I will post an update to refactor this function. Anything to make this more readable probably helps :) From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751560AbcGMMGH (ORCPT ); Wed, 13 Jul 2016 08:06:07 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:34123 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750941AbcGMMF6 (ORCPT ); Wed, 13 Jul 2016 08:05:58 -0400 X-IBM-Helo: d06dlp01.portsmouth.uk.ibm.com X-IBM-MailFrom: cornelia.huck@de.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Date: Wed, 13 Jul 2016 14:05:40 +0200 From: Cornelia Huck To: Minfei Huang Cc: mst@redhat.com, Minfei Huang , linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: Re: [PATCH] virtio: Return correct errno for function init_vq's failure In-Reply-To: <20160713115400.GA16403@MinfeideMacBook-Pro.local> References: <1466993358-12064-1-git-send-email-mnghuan@gmail.com> <20160706111832.5d4d6f43.cornelia.huck@de.ibm.com> <20160713115400.GA16403@MinfeideMacBook-Pro.local> Organization: IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz =?UTF-8?B?R2VzY2jDpGZ0c2bDvGhydW5nOg==?= Dirk Wittkopp Sitz der Gesellschaft: =?UTF-8?B?QsO2Ymxpbmdlbg==?= Registergericht: Amtsgericht Stuttgart, HRB 243294 X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16071312-0040-0000-0000-000001FDB736 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16071312-0041-0000-0000-000020F8FDDF Message-Id: <20160713140540.78c9ab01.cornelia.huck@de.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-07-13_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1607130135 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 13 Jul 2016 19:54:00 +0800 Minfei Huang wrote: > On 07/06/16 at 11:18P, Cornelia Huck wrote: > > On Mon, 27 Jun 2016 10:09:18 +0800 > > Minfei Huang wrote: > > > > > The error number -ENOENT or 0 will be returned, if we can not allocate > > > more memory in function init_vq. If host can support multiple virtual > > > queues, and we fails to allocate necessary memory structures for vq, > > > kernel may crash due to incorrect returning. > > > > > > To fix it, kernel will return correct value in init_vq. > > The error handling in this function looks horrible. > > > > When mq was introduced, init_vq started mixing up several things: > > - The mq feature is not available - which is not an error, and > > therefore should not have any influence on the return code. > > - One of the several memory allocations failed - only ->vqs gets > > special treatment, however. > > - The ->find_vqs callback failed. > > Yep. And without this patch, it is silent for boot failure. I think it > makes sense to let user notify about this failure. Agreed. > > > > > Your patch fixes the code, but it is still very convoluted due to the > > temporary arrays. > > > > May it be worthwile to introduce a helper for setting up the virtqueues > > where all virtqueues are essentially the same and just get a > > consecutive number? Michael? > > > > Hmm, How about refactor this function to make it more readable, since we > do a lot of work in it. > > I will post an update to refactor this function. Anything to make this more readable probably helps :)