Message ID | 1527791294-21600-1-git-send-email-melnichenko@ispras.ru (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
On Thu, May 31, 2018 at 9:28 PM, Peter Melnichenko <melnichenko@ispras.ru> wrote: > When sas_domain_attach_transport returns NULL, aic94xx_init > frees acquired resources but returns err equal to 0, as > assigned by a previous statement. > > The patch sets err to -ENOMEM before jumping to the error label. Wouldn't be better to fix a callee to return proper error code and... > aic94xx_transport_template = > sas_domain_attach_transport(&aic94xx_transport_functions); > - if (!aic94xx_transport_template) > + if (!aic94xx_transport_template) { > + err = -ENOMEM; > goto out_destroy_caches; > + } this becomes err = _attach_(); if (err < 0) goto ; _template = err; ?
diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c index 6c83886..4a4746c 100644 --- a/drivers/scsi/aic94xx/aic94xx_init.c +++ b/drivers/scsi/aic94xx/aic94xx_init.c @@ -1030,8 +1030,10 @@ static int __init aic94xx_init(void) aic94xx_transport_template = sas_domain_attach_transport(&aic94xx_transport_functions); - if (!aic94xx_transport_template) + if (!aic94xx_transport_template) { + err = -ENOMEM; goto out_destroy_caches; + } err = pci_register_driver(&aic94xx_pci_driver); if (err)
When sas_domain_attach_transport returns NULL, aic94xx_init frees acquired resources but returns err equal to 0, as assigned by a previous statement. The patch sets err to -ENOMEM before jumping to the error label. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Peter Melnichenko <melnichenko@ispras.ru> --- drivers/scsi/aic94xx/aic94xx_init.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)