Skip to content
30 changes: 30 additions & 0 deletions kernel/kernel_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,36 @@
#include <linux/version.h>
#include "ss/policydb.h"
#include "linux/key.h"
#include <linux/list.h>

/**
* list_count_nodes - count the number of nodes in a list
* @head: the head of the list
*
* This function iterates over the list starting from @head and counts
* the number of nodes in the list. It does not modify the list.
*
* Context: Any context. The function is safe to call in any context,
* including interrupt context, as it does not sleep or allocate
* memory.
*
* Return: the number of nodes in the list (excluding the head)
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0)
static inline __maybe_unused size_t list_count_nodes(const struct list_head *head)
{
const struct list_head *pos;
size_t count = 0;

if (!head)
return 0;

list_for_each(pos, head)
count++;

return count;
}
#endif

/*
* Adapt to Huawei HISI kernel without affecting other kernels ,
Expand Down
Loading
Loading