Revision db61ecc3352d72513c1b07805bd6f760e30c001b authored by Tommy S. Christensen on 19 May 2005, 19:46:59 UTC, committed by David S. Miller on 19 May 2005, 19:46:59 UTC
This bug causes:

assertion (!atomic_read(&sk->sk_rmem_alloc)) failed at net/netlink/af_netlink.c (122)

What's happening is that:

1) The skb is sent to socket 1.
2) Someone does a recvmsg on socket 1 and drops the ref on the skb.
   Note that the rmalloc is not returned at this point since the
   skb is still referenced.
3) The same skb is now sent to socket 2.

This version of the fix resurrects the skb_orphan call that was moved
out, last time we had 'shared-skb troubles'. It is practically a no-op
in the common case, but still prevents the possible race with recvmsg.

Signed-off-by: Tommy S. Christensen <tommy.christensen@tpack.net>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 1eda339
Raw File
tipar.txt

		Parallel link cable for Texas Instruments handhelds
		===================================================


Author: Romain Lievin
Homepage: http://lpg.ticalc.org/prj_tidev/index.html


INTRODUCTION:

This is a driver for the very common home-made parallel link cable, a cable 
designed for connecting TI8x/9x graphing calculators (handhelds) to a computer
or workstation (Alpha, Sparc). Given that driver is built on parport, the 
parallel port abstraction layer, this driver is architecture-independent.

It can also be used with another device plugged on the same port (such as a
ZIP drive). I have a 100MB ZIP and both of them work fine!

If you need more information, please visit the 'TI drivers' homepage at the URL
above.

WHAT YOU NEED:

A TI calculator and a program capable of communicating with your calculator.

TiLP will work for sure (since I am its developer!). yal92 may be able to use
it by changing tidev for tipar (may require some hacking...).

HOW TO USE IT:

You must have first compiled parport support (CONFIG_PARPORT_DEV): either 
compiled in your kernel, either as a module. 

Next, (as root):

       modprobe parport
       modprobe tipar

If it is not already there (it usually is), create the device:

       mknod /dev/tipar0 c 115 0
       mknod /dev/tipar1 c 115 1
       mknod /dev/tipar2 c 115 2

You will have to set permissions on this device to allow you to read/write
from it:

       chmod 666 /dev/tipar[0..2]
       
Now you are ready to run a linking program such as TiLP. Be sure to configure 
it properly (RTFM).
       
MODULE PARAMETERS:

  You can set these with:  modprobe tipar NAME=VALUE
  There is currently no way to set these on a per-cable basis.

  NAME: timeout
  TYPE: integer
  DEFAULT: 15
  DESC: Timeout value in tenth of seconds. If no data is available once this 
	time has expired then the driver will return with a timeout error.

  NAME: delay
  TYPE: integer
  DEFAULT: 10
  DESC: Inter-bit delay in micro-seconds. A lower value gives an higher data
	rate but makes transmission less reliable.

These parameters can be changed at run time by any program via ioctl(2) calls 
as listed in ./include/linux/ticable.h.

Rather than write 50 pages describing the ioctl() and so on, it is
perhaps more useful you look at ticables library (dev_link.c) that demonstrates
how to use them, and demonstrates the features of the driver. This is
probably a lot more useful to people interested in writing applications
that will be using this driver.

QUIRKS/BUGS:

None.

HOW TO CONTACT US:

You can email me at roms@lpg.ticalc.org. Please prefix the subject line
with "TIPAR: " so that I am certain to notice your message.
You can also mail JB at jb@jblache.org. He packaged these drivers for Debian.

CREDITS:

The code is based on tidev.c & parport.c.
The driver has been developed independently of Texas Instruments.
back to top