Re: skb_put() causes the system to loop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hello Samarth ....

First of all, you said you attached your code, but where is it? if you 
think it is too big, you can simply post it somewhere on Web and write 
down the exact URL so we can take a look...

OK, I'll try to lend some ideas....

> I am working on linux kernel 2.6.13.4. I am trying to append some
> data along with the tcp acknowledgement packet.In the tcp_send_ack ()
> function I have modified the function as follows.
>
> 1)
>         buff = alloc_skb(2*MAX_TCP_HEADER, GFP_ATOMIC);

OK, I see you are doubling the allocated buffer, what did you put there?

> 2)
>         unsigned char *data = skb_put(buff,MAX_TCP_HEADER);

Again, you are extending the used area of the buffer...what data did you 
put there?

> I have added a printk statement in the beginning of the function to
> inform me whenever the function is called. However after doing the
> above mentioned changes and on recompiling the kernel , my system
> keeps looping within the  tcp_send_ack () function. ( The
> /var/log/messages were full of my printk
> statements)

perhaps if you post your modification (maybe as patch file and then sent 
gzipped?) we can help you better. IMHO, my really raw guess, you are 
extending the buffer but you are inserting meaningless data. This data 
is then received by the other socket endpoint but is seen as non ack 
data. The result? IIRC, the sender is expected to send and send again 
until it sends the expected data, that is the correct ack packet

So, in short word, IMHO, you are sending correct ack+wrong data = wrong 
data as a whole...

hope it helps...and please send the code (patch preferred against 
original tcp_output.c, you are modifying this file, right?) so we can 
help further.

regards

Mulyadi


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux