Intel-Wired-Lan Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [bug report] ice: add TTY for GNSS module for E810T device
@ 2022-03-07 12:53 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2022-03-07 12:53 UTC (permalink / raw)
  To: intel-wired-lan

Hello Karol Kolacinski,

This is a semi-automatic email about new static checker warnings.

The patch 43113ff73453: "ice: add TTY for GNSS module for E810T 
device" from Mar 1, 2022, leads to the following Smatch complaint:

    drivers/net/ethernet/intel/ice/ice_gnss.c:101 ice_gnss_read()
    error: we previously assumed 'pf' could be null (see line 30)

drivers/net/ethernet/intel/ice/ice_gnss.c
    29		pf = gnss->back;
    30		if (!pf || !gnss->tty || !gnss->tty->port) {
                    ^^^
Check for NULL

    31			err = -EFAULT;
    32			goto exit;
    33		}
    34	
    35		hw = &pf->hw;
    36		port = gnss->tty->port;
    37	
    38		buf = (char *)get_zeroed_page(GFP_KERNEL);
    39		if (!buf) {
    40			err = -ENOMEM;
    41			goto exit;
    42		}
    43	
    44		memset(&link_topo, 0, sizeof(struct ice_aqc_link_topo_addr));
    45		link_topo.topo_params.index = ICE_E810T_GNSS_I2C_BUS;
    46		link_topo.topo_params.node_type_ctx |=
    47			FIELD_PREP(ICE_AQC_LINK_TOPO_NODE_CTX_M,
    48				   ICE_AQC_LINK_TOPO_NODE_CTX_OVERRIDE);
    49	
    50		i2c_params = ICE_GNSS_UBX_DATA_LEN_WIDTH |
    51			     ICE_AQC_I2C_USE_REPEATED_START;
    52	
    53		/* Read data length in a loop, when it's not 0 the data is ready */
    54		for (i = 0; i < ICE_MAX_UBX_READ_TRIES; i++) {
    55			err = ice_aq_read_i2c(hw, link_topo, ICE_GNSS_UBX_I2C_BUS_ADDR,
    56					      cpu_to_le16(ICE_GNSS_UBX_DATA_LEN_H),
    57					      i2c_params, (u8 *)&data_len_b, NULL);
    58			if (err)
    59				goto exit_buf;
    60	
    61			data_len = be16_to_cpu(data_len_b);
    62			if (data_len != 0 && data_len != U16_MAX)
    63				break;
    64	
    65			mdelay(10);
    66		}
    67	
    68		data_len = min(data_len, (u16)PAGE_SIZE);
    69		data_len = tty_buffer_request_room(port, data_len);
    70		if (!data_len) {
    71			err = -ENOMEM;
    72			goto exit_buf;
    73		}
    74	
    75		/* Read received data */
    76		for (i = 0; i < data_len; i += bytes_read) {
    77			u16 bytes_left = data_len - i;
    78	
    79			bytes_read = bytes_left < ICE_MAX_I2C_DATA_SIZE ? bytes_left :
    80						  ICE_MAX_I2C_DATA_SIZE;
    81	
    82			err = ice_aq_read_i2c(hw, link_topo, ICE_GNSS_UBX_I2C_BUS_ADDR,
    83					      cpu_to_le16(ICE_GNSS_UBX_EMPTY_DATA),
    84					      bytes_read, &buf[i], NULL);
    85			if (err)
    86				goto exit_buf;
    87		}
    88	
    89		/* Send the data to the tty layer for users to read. This doesn't
    90		 * actually push the data through unless tty->low_latency is set.
    91		 */
    92		tty_insert_flip_string(port, buf, i);
    93		tty_flip_buffer_push(port);
    94	
    95	exit_buf:
    96		free_page((unsigned long)buf);
    97		kthread_queue_delayed_work(gnss->kworker, &gnss->read_work,
    98					   ICE_GNSS_TIMER_DELAY_TIME);
    99	exit:
   100		if (err)
   101			dev_dbg(ice_pf_to_dev(pf), "GNSS failed to read err=%d\n", err);
                                              ^^
Unchecked dereference

   102	}
   103	

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-03-07 12:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-07 12:53 [Intel-wired-lan] [bug report] ice: add TTY for GNSS module for E810T device Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox