Commit 40543b3d authored by Jiasheng Jiang's avatar Jiasheng Jiang Committed by Tony Nguyen
Browse files

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: d6b98c8d ("ice: add write functionality for GNSS TTY")
Signed-off-by: default avatarJiasheng Jiang <jiasheng@iscas.ac.cn>
Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent f5898562
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -461,6 +461,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]);
@@ -470,8 +473,16 @@ 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);
		goto err_out;
	}

		for (i = 0; i < ICE_GNSS_TTY_MINOR_DEVICES; i++) {
	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]);
	}
@@ -481,12 +492,6 @@ static struct tty_driver *ice_gnss_create_tty_driver(struct ice_pf *pf)
	return NULL;
}

	for (i = 0; i < ICE_GNSS_TTY_MINOR_DEVICES; i++)
		dev_info(dev, "%s%d registered\n", ttydrv_name, i);

	return tty_driver;
}

/**
 * ice_gnss_init - Initialize GNSS TTY support
 * @pf: Board private structure