Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8362cd41 authored by Dan Williams's avatar Dan Williams Committed by David S. Miller
Browse files

[PATCH] libertas: fix sparse-reported problems



A few fields being converted to the wrong sized type, and a few missed
endian conversions.

Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent c7fdf269
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -543,7 +543,7 @@ int libertas_cmd_802_11d_domain_info(wlan_private * priv,
		       nr_subband * sizeof(struct ieeetypes_subbandset));

		cmd->size = cpu_to_le16(sizeof(pdomaininfo->action) +
					     domain->header.len +
					     le16_to_cpu(domain->header.len) +
					     sizeof(struct mrvlietypesheader) +
					     S_DS_GEN);
	} else {
+2 −2
Original line number Diff line number Diff line
@@ -812,8 +812,8 @@ int libertas_process_rx_command(wlan_private * priv)

	if (adapter->cur_cmd->cmdflags & CMD_F_HOSTCMD) {
		/* Copy the response back to response buffer */
		memcpy(adapter->cur_cmd->pdata_buf, resp, resp->size);

		memcpy(adapter->cur_cmd->pdata_buf, resp,
		       le16_to_cpu(resp->size));
		adapter->cur_cmd->cmdflags &= ~CMD_F_HOSTCMD;
	}

+1 −1
Original line number Diff line number Diff line
@@ -510,7 +510,7 @@ static u16 libertas_get_events_bitmap(wlan_private *priv)
		return 0;
	}

	if (pcmdptr->command != CMD_RET(CMD_802_11_SUBSCRIBE_EVENT)) {
	if (le16_to_cpu(pcmdptr->command) != CMD_RET(CMD_802_11_SUBSCRIBE_EVENT)) {
		lbs_pr_err("command response incorrect!\n");
		kfree(response_buf);
		return 0;
+13 −17
Original line number Diff line number Diff line
@@ -639,11 +639,13 @@ static void if_usb_receive(struct urb *urb)

	int recvlength = urb->actual_length;
	u8 *recvbuff = NULL;
	u32 recvtype;
	u32 recvtype = 0;

	lbs_deb_enter(LBS_DEB_USB);

	if (recvlength) {
		__le32 tmp;

		if (urb->status) {
			lbs_deb_usbd(&cardp->udev->dev,
				    "URB status is failed\n");
@@ -652,18 +654,14 @@ static void if_usb_receive(struct urb *urb)
		}

		recvbuff = skb->data + IPFIELD_ALIGN_OFFSET;
		memcpy(&recvtype, recvbuff, sizeof(u32));
		lbs_deb_usbd(&cardp->udev->dev,
			    "Recv length = 0x%x\n", recvlength);
		memcpy(&tmp, recvbuff, sizeof(u32));
		recvtype = le32_to_cpu(tmp);
		lbs_deb_usbd(&cardp->udev->dev,
			    "Receive type = 0x%X\n", recvtype);
		recvtype = le32_to_cpu(recvtype);
		lbs_deb_usbd(&cardp->udev->dev,
			    "Receive type after = 0x%X\n", recvtype);
			    "Recv length = 0x%x, Recv type = 0x%X\n",
			    recvlength, recvtype);
	} else if (urb->status)
		goto rx_exit;


	switch (recvtype) {
	case CMD_TYPE_DATA:
		process_cmdtypedata(recvlength, skb, cardp, priv);
@@ -691,6 +689,8 @@ static void if_usb_receive(struct urb *urb)
		spin_unlock(&priv->adapter->driver_lock);
		goto rx_exit;
	default:
		lbs_deb_usbd(&cardp->udev->dev, "Unknown command type 0x%X\n",
		             recvtype);
		kfree_skb(skb);
		break;
	}
@@ -711,21 +711,19 @@ static void if_usb_receive(struct urb *urb)
 */
static int if_usb_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb)
{
	int ret = -1;
	u32 tmp;
	struct usb_card_rec *cardp = (struct usb_card_rec *)priv->card;

	lbs_deb_usbd(&cardp->udev->dev,"*** type = %u\n", type);
	lbs_deb_usbd(&cardp->udev->dev,"size after = %d\n", nb);

	if (type == MVMS_CMD) {
		tmp = cpu_to_le32(CMD_TYPE_REQUEST);
		__le32 tmp = cpu_to_le32(CMD_TYPE_REQUEST);
		priv->dnld_sent = DNLD_CMD_SENT;
		memcpy(cardp->bulk_out_buffer, (u8 *) & tmp,
		       MESSAGE_HEADER_LEN);

	} else {
		tmp = cpu_to_le32(CMD_TYPE_DATA);
		__le32 tmp = cpu_to_le32(CMD_TYPE_DATA);
		priv->dnld_sent = DNLD_DATA_SENT;
		memcpy(cardp->bulk_out_buffer, (u8 *) & tmp,
		       MESSAGE_HEADER_LEN);
@@ -733,10 +731,8 @@ static int if_usb_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 n

	memcpy((cardp->bulk_out_buffer + MESSAGE_HEADER_LEN), payload, nb);

	ret =
	    usb_tx_block(priv, cardp->bulk_out_buffer, nb + MESSAGE_HEADER_LEN);

	return ret;
	return usb_tx_block(priv, cardp->bulk_out_buffer,
	                    nb + MESSAGE_HEADER_LEN);
}

/* called with adapter->driver_lock held */
+2 −2
Original line number Diff line number Diff line
@@ -370,8 +370,8 @@ static int process_rxed_802_11_packet(wlan_private * priv, struct sk_buff *skb)
		radiotap_hdr.hdr.it_version = 0;
		/* XXX must check this value for pad */
		radiotap_hdr.hdr.it_pad = 0;
		radiotap_hdr.hdr.it_len = sizeof(struct rx_radiotap_hdr);
		radiotap_hdr.hdr.it_present = RX_RADIOTAP_PRESENT;
		radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct rx_radiotap_hdr));
		radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT);
		/* unknown values */
		radiotap_hdr.flags = 0;
		radiotap_hdr.chan_freq = 0;
Loading