[PATCH] misc: ibmvsm: Fix wrong assignment of return code
From: "Bryant G. Ly" Currently the assignment is flipped and rc is always 0. Signed-off-by: Bryant G. Ly Reviewed-by: Bradley Warrum --- drivers/misc/ibmvmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/ibmvmc.c b/drivers/misc/ibmvmc.c index 8f82bb9..b8aaa68 100644 --- a/drivers/misc/ibmvmc.c +++ b/drivers/misc/ibmvmc.c @@ -2131,7 +2131,7 @@ static int ibmvmc_init_crq_queue(struct crq_server_adapter *adapter) retrc = plpar_hcall_norets(H_REG_CRQ, vdev->unit_address, queue->msg_token, PAGE_SIZE); - retrc = rc; + rc = retrc; if (rc == H_RESOURCE) rc = ibmvmc_reset_crq_queue(adapter); -- 2.7.2
Re: [PATCH] misc: ibmvsm: Fix wrong assignment of return code
"Bryant G. Ly" writes: > From: "Bryant G. Ly" > > Currently the assignment is flipped and rc is always 0. If you'd left rc uninitialised at the start of the function the compiler would have caught it for you. And what is the consequence of the bug? Nothing, complete system crash, subtle data corruption? Also this should be tagged: Fixes: 0eca353e7ae7 ("misc: IBM Virtual Management Channel Driver (VMC)") cheers > diff --git a/drivers/misc/ibmvmc.c b/drivers/misc/ibmvmc.c > index 8f82bb9..b8aaa68 100644 > --- a/drivers/misc/ibmvmc.c > +++ b/drivers/misc/ibmvmc.c > @@ -2131,7 +2131,7 @@ static int ibmvmc_init_crq_queue(struct > crq_server_adapter *adapter) > retrc = plpar_hcall_norets(H_REG_CRQ, > vdev->unit_address, > queue->msg_token, PAGE_SIZE); > - retrc = rc; > + rc = retrc; > > if (rc == H_RESOURCE) > rc = ibmvmc_reset_crq_queue(adapter);
Re: [PATCH] misc: ibmvsm: Fix wrong assignment of return code
On 8/7/18 7:28 AM, Michael Ellerman wrote: > "Bryant G. Ly" writes: > >> From: "Bryant G. Ly" >> >> Currently the assignment is flipped and rc is always 0. > If you'd left rc uninitialised at the start of the function the compiler > would have caught it for you. > > And what is the consequence of the bug? Nothing, complete system crash, > subtle data corruption? The consequence would be that if the CRQ Registration failed the first time due to not enough resources, it would never try to reset and try again. If it fails due to any other error then it would just fail the sending of the crq init message, thus it would just wait for the client to init, which would never happen. We would also have a memory leak since in the error case DMA would never get un-mapped and the message queue never gets freed. > > Also this should be tagged: > > Fixes: 0eca353e7ae7 ("misc: IBM Virtual Management Channel Driver (VMC)") > > cheers > Yep, sorry I forgot to add the Fixes:.. -Bryant