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

Commit 8d03847c authored by Andrew Lunn's avatar Andrew Lunn Committed by Greg Kroah-Hartman
Browse files

Staging: batman-adv: Fix skbuff leak in VIS code.



The vis code takes a copy of the data inside the skbuf if it is interesting
for us, so we always need to release the skbuf.

Reported-by: default avatarLinus Luessing <linus.luessing@web.de>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 837b8248
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -939,7 +939,6 @@ int recv_vis_packet(struct sk_buff *skb)
	struct vis_packet *vis_packet;
	struct ethhdr *ethhdr;
	int hdr_size = sizeof(struct vis_packet);
	int ret;

	if (skb_headlen(skb) < hdr_size)
		return NET_RX_DROP;
@@ -962,18 +961,18 @@ int recv_vis_packet(struct sk_buff *skb)
	case VIS_TYPE_SERVER_SYNC:
		/* TODO: handle fragmented skbs properly */
		receive_server_sync_packet(vis_packet, skb_headlen(skb));
		ret = NET_RX_SUCCESS;
		break;

	case VIS_TYPE_CLIENT_UPDATE:
		/* TODO: handle fragmented skbs properly */
		receive_client_update_packet(vis_packet, skb_headlen(skb));
		ret = NET_RX_SUCCESS;
		break;

	default:	/* ignore unknown packet */
		ret = NET_RX_DROP;
		break;
	}
	return ret;

	/* We take a copy of the data in the packet, so we should
	   always free the skbuf. */
	return NET_RX_DROP;
}