From: Jan Kiszka <[email protected]>

We need to free the previously allocated rtskb to the kmem-cache if
mapping fails. Otherwise, that resource leaks.

Signed-off-by: Jan Kiszka <[email protected]>
---
 kernel/drivers/net/stack/rtskb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/drivers/net/stack/rtskb.c b/kernel/drivers/net/stack/rtskb.c
index a19ef9f2dc..50611fba04 100644
--- a/kernel/drivers/net/stack/rtskb.c
+++ b/kernel/drivers/net/stack/rtskb.c
@@ -397,8 +397,10 @@ unsigned int rtskb_pool_extend(struct rtskb_pool *pool,
        skb->buf_end = skb->buf_start + SKB_DATA_ALIGN(RTSKB_SIZE) - 1;
 #endif

-       if (rtdev_map_rtskb(skb) < 0)
+       if (rtdev_map_rtskb(skb) < 0) {
+           kmem_cache_free(rtskb_slab_pool, skb);
            break;
+       }

        rtskb_queue_tail(&pool->queue, skb);

--
2.16.4

Reply via email to