Message ID | 20221208133552.21915-1-jiasheng@iscas.ac.cn (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v4] ice: Add check for kzalloc | expand |
Thu, Dec 08, 2022 at 02:35:52PM CET, jiasheng@iscas.ac.cn wrote: >Add the check for the return value of kzalloc in order to avoid >NULL pointer dereference. >Moreover, use the goto-label to share the clean code. > >Fixes: d6b98c8d242a ("ice: add write functionality for GNSS TTY") >Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Jiasheng Jiang > Sent: Thursday, December 8, 2022 7:06 PM > To: jiri@resnulli.us > Cc: leon@kernel.org; intel-wired-lan@lists.osuosl.org; Jiasheng Jiang > <jiasheng@iscas.ac.cn>; Brandeburg, Jesse <jesse.brandeburg@intel.com>; > linux-kernel@vger.kernel.org; edumazet@google.com; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; netdev@vger.kernel.org; kuba@kernel.org; > pabeni@redhat.com; davem@davemloft.net > Subject: [Intel-wired-lan] [PATCH net v4] ice: Add check for kzalloc > > Add the check for the return value of kzalloc in order to avoid NULL pointer > dereference. > Moreover, use the goto-label to share the clean code. > > Fixes: d6b98c8d242a ("ice: add write functionality for GNSS TTY") > Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> > --- > Changelog: > > v3 -> v4: > > 1. Move the check right after the kzalloc. > > v2 -> v3: > > 1. Use "while (i--)" to simplify the code. > > v1 -> v2: > > 1. Use goto-label to share the clean code. > --- > drivers/net/ethernet/intel/ice/ice_gnss.c | 23 ++++++++++++++--------- > 1 file changed, 14 insertions(+), 9 deletions(-) > Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
diff --git a/drivers/net/ethernet/intel/ice/ice_gnss.c b/drivers/net/ethernet/intel/ice/ice_gnss.c index b5a7f246d230..60b6c7125616 100644 --- a/drivers/net/ethernet/intel/ice/ice_gnss.c +++ b/drivers/net/ethernet/intel/ice/ice_gnss.c @@ -460,6 +460,9 @@ static struct tty_driver *ice_gnss_create_tty_driver(struct ice_pf *pf) for (i = 0; i < ICE_GNSS_TTY_MINOR_DEVICES; i++) { pf->gnss_tty_port[i] = kzalloc(sizeof(*pf->gnss_tty_port[i]), GFP_KERNEL); + if (!pf->gnss_tty_port[i]) + goto err_out; + pf->gnss_serial[i] = NULL; tty_port_init(pf->gnss_tty_port[i]); @@ -469,21 +472,23 @@ static struct tty_driver *ice_gnss_create_tty_driver(struct ice_pf *pf) err = tty_register_driver(tty_driver); if (err) { dev_err(dev, "Failed to register TTY driver err=%d\n", err); - - for (i = 0; i < ICE_GNSS_TTY_MINOR_DEVICES; i++) { - tty_port_destroy(pf->gnss_tty_port[i]); - kfree(pf->gnss_tty_port[i]); - } - kfree(ttydrv_name); - tty_driver_kref_put(pf->ice_gnss_tty_driver); - - return NULL; + goto err_out; } for (i = 0; i < ICE_GNSS_TTY_MINOR_DEVICES; i++) dev_info(dev, "%s%d registered\n", ttydrv_name, i); return tty_driver; + +err_out: + while (i--) { + tty_port_destroy(pf->gnss_tty_port[i]); + kfree(pf->gnss_tty_port[i]); + } + kfree(ttydrv_name); + tty_driver_kref_put(pf->ice_gnss_tty_driver); + + return NULL; } /**
Add the check for the return value of kzalloc in order to avoid NULL pointer dereference. Moreover, use the goto-label to share the clean code. Fixes: d6b98c8d242a ("ice: add write functionality for GNSS TTY") Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> --- Changelog: v3 -> v4: 1. Move the check right after the kzalloc. v2 -> v3: 1. Use "while (i--)" to simplify the code. v1 -> v2: 1. Use goto-label to share the clean code. --- drivers/net/ethernet/intel/ice/ice_gnss.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-)