[PATCH next] Drivers: hv: mshv: Prevent potential NULL dereference

Dan Carpenter posted 1 patch 9 months ago
drivers/hv/mshv_synic.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH next] Drivers: hv: mshv: Prevent potential NULL dereference
Posted by Dan Carpenter 9 months ago
Move the NULL check on "partition" before the dereference.

Fixes: f5288d14069b ("Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/hv/mshv_synic.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/hv/mshv_synic.c b/drivers/hv/mshv_synic.c
index a3daedd680ff..88949beb5e37 100644
--- a/drivers/hv/mshv_synic.c
+++ b/drivers/hv/mshv_synic.c
@@ -151,13 +151,12 @@ static bool mshv_async_call_completion_isr(struct hv_message *msg)
 	rcu_read_lock();
 
 	partition = mshv_partition_find(partition_id);
-	partition->async_hypercall_status = async_msg->status;
-
 	if (unlikely(!partition)) {
 		pr_debug("failed to find partition %llu\n", partition_id);
 		goto unlock_out;
 	}
 
+	partition->async_hypercall_status = async_msg->status;
 	complete(&partition->async_hypercall);
 
 	handled = true;
-- 
2.47.2
Re: [PATCH next] Drivers: hv: mshv: Prevent potential NULL dereference
Posted by Nuno Das Neves 9 months ago
On 3/21/2025 7:35 AM, Dan Carpenter wrote:
> Move the NULL check on "partition" before the dereference.
> 
> Fixes: f5288d14069b ("Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
>  drivers/hv/mshv_synic.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/hv/mshv_synic.c b/drivers/hv/mshv_synic.c
> index a3daedd680ff..88949beb5e37 100644
> --- a/drivers/hv/mshv_synic.c
> +++ b/drivers/hv/mshv_synic.c
> @@ -151,13 +151,12 @@ static bool mshv_async_call_completion_isr(struct hv_message *msg)
>  	rcu_read_lock();
>  
>  	partition = mshv_partition_find(partition_id);
> -	partition->async_hypercall_status = async_msg->status;
> -
>  	if (unlikely(!partition)) {
>  		pr_debug("failed to find partition %llu\n", partition_id);
>  		goto unlock_out;
>  	}
>  
> +	partition->async_hypercall_status = async_msg->status;
>  	complete(&partition->async_hypercall);
>  
>  	handled = true;

Thanks for catching this one!
Wei could you please apply or squash this into the driver patch?

Thanks
Nuno
Re: [PATCH next] Drivers: hv: mshv: Prevent potential NULL dereference
Posted by Wei Liu 9 months ago
On Fri, Mar 21, 2025 at 09:53:45AM -0700, Nuno Das Neves wrote:
> On 3/21/2025 7:35 AM, Dan Carpenter wrote:
> > Move the NULL check on "partition" before the dereference.
> > 
> > Fixes: f5288d14069b ("Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs")
> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> > ---
> >  drivers/hv/mshv_synic.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/hv/mshv_synic.c b/drivers/hv/mshv_synic.c
> > index a3daedd680ff..88949beb5e37 100644
> > --- a/drivers/hv/mshv_synic.c
> > +++ b/drivers/hv/mshv_synic.c
> > @@ -151,13 +151,12 @@ static bool mshv_async_call_completion_isr(struct hv_message *msg)
> >  	rcu_read_lock();
> >  
> >  	partition = mshv_partition_find(partition_id);
> > -	partition->async_hypercall_status = async_msg->status;
> > -
> >  	if (unlikely(!partition)) {
> >  		pr_debug("failed to find partition %llu\n", partition_id);
> >  		goto unlock_out;
> >  	}
> >  
> > +	partition->async_hypercall_status = async_msg->status;
> >  	complete(&partition->async_hypercall);
> >  
> >  	handled = true;
> 
> Thanks for catching this one!
> Wei could you please apply or squash this into the driver patch?

Thank you Dan. I squashed this fix to the original patch.