diff options
| author | Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> | 2016-11-07 16:44:44 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-09 10:46:41 -0800 |
| commit | d01a8a0da053672a392636faf6288ca76e66c743 (patch) | |
| tree | 4d12a278c4a9e41ab3a6d927a499b10a5e6dbfd6 /net | |
| parent | 4a91ea36cbf0f5a782b5b6f69604ed70bd0ab6ba (diff) | |
net: rmnet_data: Handle leaked packets when adding MAP fields in TX
Some creators of skb's may fail to set sufficient headroom or
tailroom to stamp the MAP header or tailroom respectively when
transmitting packets to rmnet_data.
In these cases, rmnet_data was failing to free these packets which
lead to out of memory scenarios in low memory targets. Free these
skb's in these scenarios.
CRs-Fixed: 1086873
Change-Id: I8bd2eb93393766bf9c301766e525354770577e0a
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Diffstat (limited to 'net')
| -rw-r--r-- | net/rmnet_data/rmnet_data_handlers.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/rmnet_data/rmnet_data_handlers.c b/net/rmnet_data/rmnet_data_handlers.c index 185b609e637f..35b94e9da0d9 100644 --- a/net/rmnet_data/rmnet_data_handlers.c +++ b/net/rmnet_data/rmnet_data_handlers.c @@ -505,6 +505,7 @@ static int rmnet_map_egress_handler(struct sk_buff *skb, if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL)) { LOGD("Failed to add headroom of %d bytes", required_headroom); + kfree_skb(skb); return 1; } } @@ -528,6 +529,7 @@ static int rmnet_map_egress_handler(struct sk_buff *skb, if (!map_header) { LOGD("%s", "Failed to add MAP header to egress packet"); + kfree_skb(skb); return 1; } |
