brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 44d1237 Raw
57 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * KUnit resource management helpers for SKBs (skbuff).4 *5 * Copyright (C) 2023 Intel Corporation6 */7 8#ifndef _KUNIT_SKBUFF_H9#define _KUNIT_SKBUFF_H10 11#include <kunit/resource.h>12#include <linux/skbuff.h>13 14static void kunit_action_kfree_skb(void *p)15{16	kfree_skb((struct sk_buff *)p);17}18 19/**20 * kunit_zalloc_skb() - Allocate and initialize a resource managed skb.21 * @test: The test case to which the skb belongs22 * @len: size to allocate23 *24 * Allocate a new struct sk_buff with GFP_KERNEL, zero fill the give length25 * and add it as a resource to the kunit test for automatic cleanup.26 *27 * Returns: newly allocated SKB, or %NULL on error28 */29static inline struct sk_buff *kunit_zalloc_skb(struct kunit *test, int len,30					       gfp_t gfp)31{32	struct sk_buff *res = alloc_skb(len, GFP_KERNEL);33 34	if (!res || skb_pad(res, len))35		return NULL;36 37	if (kunit_add_action_or_reset(test, kunit_action_kfree_skb, res))38		return NULL;39 40	return res;41}42 43/**44 * kunit_kfree_skb() - Like kfree_skb except for allocations managed by KUnit.45 * @test: The test case to which the resource belongs.46 * @skb: The SKB to free.47 */48static inline void kunit_kfree_skb(struct kunit *test, struct sk_buff *skb)49{50	if (!skb)51		return;52 53	kunit_release_action(test, kunit_action_kfree_skb, (void *)skb);54}55 56#endif /* _KUNIT_SKBUFF_H */57