diff mbox series

[5.10,1/1] i40e: Add checking for null for nlmsg_find_attr()

Message ID 20230126135555.11407-2-n.petrova@fintech.ru
State Superseded
Headers show
Series i40e: Add checking for null for nlmsg_find_attr() | expand

Commit Message

Natalia Petrova Jan. 26, 2023, 1:55 p.m. UTC
The result of nlmsg_find_attr() 'br_spec' is dereferenced in
nla_for_each_nested(), but it can take null value in nla_find() function,
which will result in an error.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 51616018dd1b ("i40e: Add support for getlink, setlink ndo ops")
Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jesse Brandeburg Jan. 26, 2023, 7:55 p.m. UTC | #1
On 1/26/2023 5:55 AM, Natalia Petrova wrote:
> The result of nlmsg_find_attr() 'br_spec' is dereferenced in
> nla_for_each_nested(), but it can take null value in nla_find() function,
> which will result in an error.
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: 51616018dd1b ("i40e: Add support for getlink, setlink ndo ops")
> Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
> ---
>   drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 53d0083e35da..4626d2a1af91 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -13167,6 +13167,8 @@ static int i40e_ndo_bridge_setlink(struct net_device *dev,
>   	}
>   
>   	br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC);
> +	if (!br_spec)
> +		return -EINVAL;
>   
>   	nla_for_each_nested(attr, br_spec, rem) {
>   		__u16 mode;

Makes sense to me. Thanks.

Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Jesse Brandeburg Jan. 26, 2023, 7:59 p.m. UTC | #2
On 1/26/2023 11:55 AM, Jesse Brandeburg wrote:
> On 1/26/2023 5:55 AM, Natalia Petrova wrote:
>> The result of nlmsg_find_attr() 'br_spec' is dereferenced in
>> nla_for_each_nested(), but it can take null value in nla_find() function,
>> which will result in an error.
>>
>> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>>
>> Fixes: 51616018dd1b ("i40e: Add support for getlink, setlink ndo ops")
>> Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
>> ---
>>   drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c 
>> b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> index 53d0083e35da..4626d2a1af91 100644
>> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
>> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> @@ -13167,6 +13167,8 @@ static int i40e_ndo_bridge_setlink(struct 
>> net_device *dev,
>>       }
>>       br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), 
>> IFLA_AF_SPEC);
>> +    if (!br_spec)
>> +        return -EINVAL;
>>       nla_for_each_nested(attr, br_spec, rem) {
>>           __u16 mode;
> 
> Makes sense to me. Thanks.
> 
> Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 

I presume that you meant this to be targeted to the "net" tree, which 
you should indicate with the subject line:
[PATCH net ...]

as per the netdev rules published [1], and generally you don't need a 
cover letter for a single patch.

[1] https://www.kernel.org/doc/html/v5.10/networking/netdev-FAQ.html
gregkh@linuxfoundation.org Jan. 27, 2023, 7:32 a.m. UTC | #3
On Thu, Jan 26, 2023 at 04:55:55PM +0300, Natalia Petrova wrote:
> The result of nlmsg_find_attr() 'br_spec' is dereferenced in
> nla_for_each_nested(), but it can take null value in nla_find() function,
> which will result in an error.
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: 51616018dd1b ("i40e: Add support for getlink, setlink ndo ops")
> Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 2 ++
>  1 file changed, 2 insertions(+)


<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read:
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

</formletter>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 53d0083e35da..4626d2a1af91 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -13167,6 +13167,8 @@  static int i40e_ndo_bridge_setlink(struct net_device *dev,
 	}
 
 	br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC);
+	if (!br_spec)
+		return -EINVAL;
 
 	nla_for_each_nested(attr, br_spec, rem) {
 		__u16 mode;