Назначение указателя структуры вызывает замораживание ядра

У меня есть структура в ядре Linux, как показано ниже:

struct st_fetch_point {

struct sk_buff *end_pkt ;
struct sk_buff *start_pkt ;
struct sk_buff *current_pkt ;
struct st_fetch_point *next_fortp ;
struct st_fetch_point *next_consec ;

};

У меня есть четыре указателя на определенную структуру, как показано ниже:

struct mptcp_tcp_sock {

struct st_fetch_point *start_fetch_point ;
struct st_fetch_point *last_fetch_point;
struct st_fetch_point *current_fetch_point;
struct st_fetch_point *first_fetch_point ;
struct tcp_sock *tp;
.......................
.......................

};

struct tcp_sock {

struct mptcp_tcp_sock *mptcp;
............................
............................

};

Я просто делаю эту операцию:

first_fetch_point = kmalloc ((sizeof(struct st_fetch_point)), GFP_ATOMIC);
first_fetch_point->start_pkt = skb;   //skb value is a pointer to some memory address 
first_fetch_point->current_pkt = skb;
first_fetch_point->end_pkt = skb2;

Затем, когда я выполнил следующую строку:

tp->mptcp->current_fetch_point = first_fetch_point ; // tp->mptcp->current_fetch_point = NULL before this point

Ядро зависает. Что-то не так с тем, как я назначаю эти указатели? Я работаю на платформе Ubuntu и действительно исправляю, что может привести к зависанию ядра в этой точке.

0 ответов

Другие вопросы по тегам