forked from mirrors/linux
		
	ethtool: check the return value of get_regs_len
The return type for get_regs_len in struct ethtool_ops is int, the hns3 driver may return error when failing to get the regs len by sending cmd to firmware. Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									a3c9311f62
								
							
						
					
					
						commit
						f9fc54d313
					
				
					 1 changed files with 10 additions and 2 deletions
				
			
		| 
						 | 
					@ -793,8 +793,13 @@ static noinline_for_stack int ethtool_get_drvinfo(struct net_device *dev,
 | 
				
			||||||
		if (rc >= 0)
 | 
							if (rc >= 0)
 | 
				
			||||||
			info.n_priv_flags = rc;
 | 
								info.n_priv_flags = rc;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (ops->get_regs_len)
 | 
						if (ops->get_regs_len) {
 | 
				
			||||||
		info.regdump_len = ops->get_regs_len(dev);
 | 
							int ret = ops->get_regs_len(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (ret > 0)
 | 
				
			||||||
 | 
								info.regdump_len = ret;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ops->get_eeprom_len)
 | 
						if (ops->get_eeprom_len)
 | 
				
			||||||
		info.eedump_len = ops->get_eeprom_len(dev);
 | 
							info.eedump_len = ops->get_eeprom_len(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1337,6 +1342,9 @@ static int ethtool_get_regs(struct net_device *dev, char __user *useraddr)
 | 
				
			||||||
		return -EFAULT;
 | 
							return -EFAULT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	reglen = ops->get_regs_len(dev);
 | 
						reglen = ops->get_regs_len(dev);
 | 
				
			||||||
 | 
						if (reglen <= 0)
 | 
				
			||||||
 | 
							return reglen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (regs.len > reglen)
 | 
						if (regs.len > reglen)
 | 
				
			||||||
		regs.len = reglen;
 | 
							regs.len = reglen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue