mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:46:16 +00:00
kunit: add a convenience allocation wrapper for SKBs
Add a simple convenience helper to allocate and zero fill an SKB for the use by a kunit test. Also provide a way to free it again in case that may be desirable. This simply mirrors the kunit_kmalloc API. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Reviewed-by: David Gow <davidgow@google.com> Link: https://msgid.link/20231220151952.415232-3-benjamin@sipsolutions.net [adjust file description as discussed] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
292010ee50
commit
b3231d353a
56
include/kunit/skbuff.h
Normal file
56
include/kunit/skbuff.h
Normal file
@ -0,0 +1,56 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* KUnit resource management helpers for SKBs (skbuff).
|
||||
*
|
||||
* Copyright (C) 2023 Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef _KUNIT_SKBUFF_H
|
||||
#define _KUNIT_SKBUFF_H
|
||||
|
||||
#include <kunit/resource.h>
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static void kunit_action_kfree_skb(void *p)
|
||||
{
|
||||
kfree_skb((struct sk_buff *)p);
|
||||
}
|
||||
|
||||
/**
|
||||
* kunit_zalloc_skb() - Allocate and initialize a resource managed skb.
|
||||
* @test: The test case to which the skb belongs
|
||||
* @len: size to allocate
|
||||
*
|
||||
* Allocate a new struct sk_buff with GFP_KERNEL, zero fill the give length
|
||||
* and add it as a resource to the kunit test for automatic cleanup.
|
||||
*
|
||||
* Returns: newly allocated SKB, or %NULL on error
|
||||
*/
|
||||
static inline struct sk_buff *kunit_zalloc_skb(struct kunit *test, int len,
|
||||
gfp_t gfp)
|
||||
{
|
||||
struct sk_buff *res = alloc_skb(len, GFP_KERNEL);
|
||||
|
||||
if (!res || skb_pad(res, len))
|
||||
return NULL;
|
||||
|
||||
if (kunit_add_action_or_reset(test, kunit_action_kfree_skb, res))
|
||||
return NULL;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* kunit_kfree_skb() - Like kfree_skb except for allocations managed by KUnit.
|
||||
* @test: The test case to which the resource belongs.
|
||||
* @skb: The SKB to free.
|
||||
*/
|
||||
static inline void kunit_kfree_skb(struct kunit *test, struct sk_buff *skb)
|
||||
{
|
||||
if (!skb)
|
||||
return;
|
||||
|
||||
kunit_release_action(test, kunit_action_kfree_skb, (void *)skb);
|
||||
}
|
||||
|
||||
#endif /* _KUNIT_SKBUFF_H */
|
Loading…
Reference in New Issue
Block a user