Commit 0aa7d35f authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files
Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2023-01-09 (ice)

This series contains updates to ice driver only.

Jiasheng Jiang frees allocated cmd_buf if write_buf allocation failed to
prevent memory leak.

Yuan Can adds check, and proper cleanup, of gnss_tty_port allocation call
to avoid memory leaks.

* '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
  ice: Add check for kzalloc
  ice: Fix potential memory leak in ice_gnss_tty_write()
====================

Link: https://lore.kernel.org/r/20230109225358.3478060-1-anthony.l.nguyen@intel.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 96398560 40543b3d
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ ice_gnss_tty_write(struct tty_struct *tty, const unsigned char *buf, int count)
	/* Send the data out to a hardware port */
	write_buf = kzalloc(sizeof(*write_buf), GFP_KERNEL);
	if (!write_buf) {
		kfree(cmd_buf);
		err = -ENOMEM;
		goto exit;
	}
@@ -460,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]);
@@ -469,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]);
	}
@@ -480,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