From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Date: Fri, 10 Jul 2020 07:17:59 +0000 Subject: Re: [PATCH] scsi: virtio_scsi: Remove unnecessary condition checks Message-Id: <58e3feb8-1ffb-f77f-cf3a-75222b3cd524@redhat.com> List-Id: References: <8eb9a827-45f1-e71c-0cbf-1c29acd8e310@web.de> In-Reply-To: <8eb9a827-45f1-e71c-0cbf-1c29acd8e310@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: Markus Elfring , Xianting Tian , linux-scsi@vger.kernel.org, virtualization@lists.linux-foundation.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org, "James E. J. Bottomley" , Jason Wang , "Martin K. Petersen" , "Michael S. Tsirkin" , Stefan Hajnoczi On 10/07/20 08:32, Markus Elfring wrote: >>>> + mempool_destroy(virtscsi_cmd_pool); >>>> + virtscsi_cmd_pool = NULL; >>>> + kmem_cache_destroy(virtscsi_cmd_cache); >>>> + virtscsi_cmd_cache = NULL; >>>> return ret; >>>> } >>> >>> How do you think about to add a jump target so that the execution >>> of a few statements can be avoided according to a previous >>> null pointer check? >> >> The point of the patch is precisely to simplify the code, > > I suggest to reconsider also Linux coding style aspects > for the implementation of the function “init”. > https://elixir.bootlin.com/linux/v5.8-rc4/source/drivers/scsi/virtio_scsi.c#L980 > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/virtio_scsi.c?idBf82040ee66db13525dc6f14b8559890b2f4c1c#n980 > > if (!virtscsi_cmd_cache) { > pr_err("kmem_cache_create() for virtscsi_cmd_cache failed\n"); > - goto error; > + return -ENOMEM; > } Could be doable, but I don't see a particular benefit. Having a single error loop is an advantage by itself. The coding style is a suggestion. Note the difference between kfree(foo->bar); kfree(foo); and kfree(bar); kfree(foo); > See also: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?idBf82040ee66db13525dc6f14b8559890b2f4c1c#n461 > > >> executing a couple more instruction is not an issue. > > With which update steps would like to achieve such a code variant? > > destroy_pool: > mempool_destroy(virtscsi_cmd_pool); > virtscsi_cmd_pool = NULL; > destroy_cache: > kmem_cache_destroy(virtscsi_cmd_cache); > virtscsi_cmd_cache = NULL; > return ret; ... while there's no advantage in this. Paolo