powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не хватает буфера sk_buff
1 сообщений из 1, страница 1 из 1
Не хватает буфера sk_buff
    #39964477
_WeSTMan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо тем, кто ответил в теме, к сожалению я не успел ответить и тему закрыли.

Я иногда ловлю панику ядра. Вот код, и я думаю, что в нем есть проблемы. Как минимум - я увидел, что tail > end, но как исправить - пока не могу додуматься. Помогите, пожалуйста, разобраться!

Язык C

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
unsigned char extra_data[] = «MyData»;
unsigned char *temp;
data = (char *)(skb->data + sizeof(struct iphdr) + sizeof(struct udphdr));
temp = kmalloc(1550 * sizeof(char), GFP_ATOMIC);
data_len = skb->len - TOT_HDR_LEN;
memcpy(temp, data, data_len);
unsigned char *ptr = temp + data_len;
extra_data_len = sizeof(extra_data);
memcpy(ptr, extra_data, extra_data_len);
tot_data_len = data_len + extra_data_len - 1;
skb_put(skb, extra_data_len - 1);
memcpy(data, temp, tot_data_len);
kfree(temp);
ip->tot_len = htons(tot_data_len + TOT_HDR_LEN);
udp->len = htons(tot_data_len + UDP_HDR_LEN);
ip->daddr = in_aton(«IP_dest»);
udp->dest = htons(iPort);


И дальше пересчет контрольных сумм. Пару раз передаст пакеты и упадет в панику ядра.

Ошибка:

skbuff: skb_over_panic: text:ffffffffc0207181 len:675 put:20 head
:ffff8800d7030800 data:ffff8800d7030820 tail:0x2c3 end:0x2c0 dev:ppp0
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не хватает буфера sk_buff
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]