aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
index 29842ccc91a9..08e4afc0ab39 100644
--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
@@ -126,12 +126,12 @@ static int rmnet_map_egress_handler(struct sk_buff *skb,
126 126
127 if (skb_headroom(skb) < required_headroom) { 127 if (skb_headroom(skb) < required_headroom) {
128 if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL)) 128 if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL))
129 return RMNET_MAP_CONSUMED; 129 goto fail;
130 } 130 }
131 131
132 map_header = rmnet_map_add_map_header(skb, additional_header_len, 0); 132 map_header = rmnet_map_add_map_header(skb, additional_header_len, 0);
133 if (!map_header) 133 if (!map_header)
134 return RMNET_MAP_CONSUMED; 134 goto fail;
135 135
136 if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) { 136 if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) {
137 if (mux_id == 0xff) 137 if (mux_id == 0xff)
@@ -143,6 +143,10 @@ static int rmnet_map_egress_handler(struct sk_buff *skb,
143 skb->protocol = htons(ETH_P_MAP); 143 skb->protocol = htons(ETH_P_MAP);
144 144
145 return RMNET_MAP_SUCCESS; 145 return RMNET_MAP_SUCCESS;
146
147fail:
148 kfree_skb(skb);
149 return RMNET_MAP_CONSUMED;
146} 150}
147 151
148static void 152static void