[PATCH 4.14 116/159] net: qualcomm: rmnet: Fix leak on transmit failure

2018-02-23 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Subash Abhinov Kasiviswanathan 


[ Upstream commit c20a548792f15f8d8e38cd74356301c6db0d241f ]

If a skb in transmit path does not have sufficient headroom to add
the map header, the skb is not sent out and is never freed.

Fixes: ceed73a2cf4a ("drivers: net: ethernet: qualcomm: rmnet: Initial 
implementation")
Signed-off-by: Subash Abhinov Kasiviswanathan 
Signed-off-by: David S. Miller 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
@@ -166,12 +166,12 @@ static int rmnet_map_egress_handler(stru
 
if (skb_headroom(skb) < required_headroom) {
if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL))
-   return RMNET_MAP_CONSUMED;
+   goto fail;
}
 
map_header = rmnet_map_add_map_header(skb, additional_header_len, 0);
if (!map_header)
-   return RMNET_MAP_CONSUMED;
+   goto fail;
 
if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) {
if (ep->mux_id == 0xff)
@@ -183,6 +183,10 @@ static int rmnet_map_egress_handler(stru
skb->protocol = htons(ETH_P_MAP);
 
return RMNET_MAP_SUCCESS;
+
+fail:
+   kfree_skb(skb);
+   return RMNET_MAP_CONSUMED;
 }
 
 /* Ingress / Egress Entry Points */




[PATCH 4.14 116/159] net: qualcomm: rmnet: Fix leak on transmit failure

2018-02-23 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Subash Abhinov Kasiviswanathan 


[ Upstream commit c20a548792f15f8d8e38cd74356301c6db0d241f ]

If a skb in transmit path does not have sufficient headroom to add
the map header, the skb is not sent out and is never freed.

Fixes: ceed73a2cf4a ("drivers: net: ethernet: qualcomm: rmnet: Initial 
implementation")
Signed-off-by: Subash Abhinov Kasiviswanathan 
Signed-off-by: David S. Miller 
Signed-off-by: Sasha Levin 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
+++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
@@ -166,12 +166,12 @@ static int rmnet_map_egress_handler(stru
 
if (skb_headroom(skb) < required_headroom) {
if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL))
-   return RMNET_MAP_CONSUMED;
+   goto fail;
}
 
map_header = rmnet_map_add_map_header(skb, additional_header_len, 0);
if (!map_header)
-   return RMNET_MAP_CONSUMED;
+   goto fail;
 
if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) {
if (ep->mux_id == 0xff)
@@ -183,6 +183,10 @@ static int rmnet_map_egress_handler(stru
skb->protocol = htons(ETH_P_MAP);
 
return RMNET_MAP_SUCCESS;
+
+fail:
+   kfree_skb(skb);
+   return RMNET_MAP_CONSUMED;
 }
 
 /* Ingress / Egress Entry Points */