Revision 2fdba6b085eb7068e9594cfa55ffe40466184b4d authored by Herbert Xu on 19 May 2005, 05:52:33 UTC, committed by David S. Miller on 19 May 2005, 05:52:33 UTC
Having frag_list members which holds wmem of an sk leads to nightmares
with partially cloned frag skb's.  The reason is that once you unleash
a skb with a frag_list that has individual sk ownerships into the stack
you can never undo those ownerships safely as they may have been cloned
by things like netfilter.  Since we have to undo them in order to make
skb_linearize happy this approach leads to a dead-end.

So let's go the other way and make this an invariant:

	For any skb on a frag_list, skb->sk must be NULL.

That is, the socket ownership always belongs to the head skb.
It turns out that the implementation is actually pretty simple.

The above invariant is actually violated in the following patch
for a short duration inside ip_fragment.  This is OK because the
offending frag_list member is either destroyed at the end of the
slow path without being sent anywhere, or it is detached from
the frag_list before being sent.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent d481020
History
File Mode Size
aacraid
aic7xxx
aic7xxx_old
arm
dpt
ibmvscsi
lpfc
megaraid
pcmcia
qla2xxx
sym53c8xx_2
3w-9xxx.c -rw-r--r-- 70.2 KB
3w-9xxx.h -rw-r--r-- 25.4 KB
3w-xxxx.c -rw-r--r-- 84.8 KB
3w-xxxx.h -rw-r--r-- 16.5 KB
53c700.c -rw-r--r-- 70.1 KB
53c700.h -rw-r--r-- 15.5 KB
53c700.scr -rw-r--r-- 10.6 KB
53c700_d.h_shipped -rw-r--r-- 28.2 KB
53c7xx.c -rw-r--r-- 191.2 KB
53c7xx.h -rw-r--r-- 54.8 KB
53c7xx.scr -rw-r--r-- 45.9 KB
53c7xx_d.h_shipped -rw-r--r-- 61.9 KB
53c7xx_u.h_shipped -rw-r--r-- 2.6 KB
BusLogic.c -rw-r--r-- 148.2 KB
BusLogic.h -rw-r--r-- 40.9 KB
FlashPoint.c -rw-r--r-- 308.1 KB
Kconfig -rw-r--r-- 65.4 KB
Makefile -rw-r--r-- 7.2 KB
NCR5380.c -rw-r--r-- 91.8 KB
NCR5380.h -rw-r--r-- 13.6 KB
NCR53C9x.c -rw-r--r-- 102.4 KB
NCR53C9x.h -rw-r--r-- 30.3 KB
NCR53c406a.c -rw-r--r-- 28.9 KB
NCR_D700.c -rw-r--r-- 10.4 KB
NCR_D700.h -rw-r--r-- 801 bytes
NCR_Q720.c -rw-r--r-- 9.2 KB
NCR_Q720.h -rw-r--r-- 597 bytes
a100u2w.c -rw-r--r-- 38.5 KB
a100u2w.h -rw-r--r-- 19.1 KB
a2091.c -rw-r--r-- 6.6 KB
a2091.h -rw-r--r-- 1.9 KB
a3000.c -rw-r--r-- 6.3 KB
a3000.h -rw-r--r-- 2.0 KB
advansys.c -rw-r--r-- 713.3 KB
advansys.h -rw-r--r-- 1.1 KB
aha152x.c -rw-r--r-- 98.8 KB
aha152x.h -rw-r--r-- 9.9 KB
aha1542.c -rw-r--r-- 51.3 KB
aha1542.h -rw-r--r-- 4.7 KB
aha1740.c -rw-r--r-- 19.8 KB
aha1740.h -rw-r--r-- 4.8 KB
ahci.c -rw-r--r-- 27.5 KB
aic7xxx_old.c -rw-r--r-- 360.3 KB
amiga7xx.c -rw-r--r-- 3.5 KB
amiga7xx.h -rw-r--r-- 534 bytes
ata_piix.c -rw-r--r-- 17.6 KB
atari_NCR5380.c -rw-r--r-- 92.6 KB
atari_dma_emul.c -rw-r--r-- 10.8 KB
atari_scsi.c -rw-r--r-- 36.2 KB
atari_scsi.h -rw-r--r-- 6.6 KB
atp870u.c -rw-r--r-- 86.6 KB
atp870u.h -rw-r--r-- 1.3 KB
blz1230.c -rw-r--r-- 9.5 KB
blz2060.c -rw-r--r-- 8.4 KB
bvme6000.c -rw-r--r-- 1.7 KB
bvme6000.h -rw-r--r-- 573 bytes
constants.c -rw-r--r-- 49.6 KB
cpqfcTS.h -rw-r--r-- 807 bytes
cpqfcTSchip.h -rw-r--r-- 9.0 KB
cpqfcTScontrol.c -rw-r--r-- 72.7 KB
cpqfcTSi2c.c -rw-r--r-- 12.3 KB
cpqfcTSinit.c -rw-r--r-- 63.7 KB
cpqfcTSioctl.h -rw-r--r-- 2.3 KB
cpqfcTSstructs.h -rw-r--r-- 46.2 KB
cpqfcTStrigger.c -rw-r--r-- 901 bytes
cpqfcTStrigger.h -rw-r--r-- 168 bytes
cpqfcTSworker.c -rw-r--r-- 207.3 KB
cyberstorm.c -rw-r--r-- 11.0 KB
cyberstormII.c -rw-r--r-- 8.6 KB
dc395x.c -rw-r--r-- 143.3 KB
dc395x.h -rw-r--r-- 25.2 KB
dec_esp.c -rw-r--r-- 14.8 KB
dmx3191d.c -rw-r--r-- 4.5 KB
dpt_i2o.c -rw-r--r-- 86.5 KB
dpti.h -rw-r--r-- 12.0 KB
dtc.c -rw-r--r-- 13.2 KB
dtc.h -rw-r--r-- 2.7 KB
eata.c -rw-r--r-- 78.2 KB
eata_generic.h -rw-r--r-- 14.6 KB
eata_pio.c -rw-r--r-- 27.8 KB
eata_pio.h -rw-r--r-- 2.1 KB
esp.c -rw-r--r-- 121.3 KB
esp.h -rw-r--r-- 19.9 KB
fastlane.c -rw-r--r-- 11.0 KB
fcal.c -rw-r--r-- 9.3 KB
fcal.h -rw-r--r-- 632 bytes
fd_mcs.c -rw-r--r-- 39.8 KB
fdomain.c -rw-r--r-- 55.6 KB
fdomain.h -rw-r--r-- 1.1 KB
g_NCR5380.c -rw-r--r-- 25.6 KB
g_NCR5380.h -rw-r--r-- 3.4 KB
g_NCR5380_mmio.c -rw-r--r-- 232 bytes
gdth.c -rw-r--r-- 203.1 KB
gdth.h -rw-r--r-- 47.5 KB
gdth_ioctl.h -rw-r--r-- 14.9 KB
gdth_kcompat.h -rw-r--r-- 307 bytes
gdth_proc.c -rw-r--r-- 34.2 KB
gdth_proc.h -rw-r--r-- 1.3 KB
gvp11.c -rw-r--r-- 10.3 KB
gvp11.h -rw-r--r-- 1.7 KB
hosts.c -rw-r--r-- 11.6 KB
hosts.h -rw-r--r-- 100 bytes
ibmmca.c -rw-r--r-- 94.5 KB
ibmmca.h -rw-r--r-- 835 bytes
ide-scsi.c -rw-r--r-- 33.0 KB
imm.c -rw-r--r-- 29.4 KB
imm.h -rw-r--r-- 5.0 KB
in2000.c -rw-r--r-- 72.0 KB
in2000.h -rw-r--r-- 13.6 KB
initio.c -rw-r--r-- 93.7 KB
initio.h -rw-r--r-- 32.7 KB
ipr.c -rw-r--r-- 163.0 KB
ipr.h -rw-r--r-- 32.7 KB
ips.c -rw-r--r-- 241.8 KB
ips.h -rw-r--r-- 43.7 KB
jazz_esp.c -rw-r--r-- 8.9 KB
lasi700.c -rw-r--r-- 4.8 KB
libata-core.c -rw-r--r-- 92.5 KB
libata-scsi.c -rw-r--r-- 38.8 KB
libata.h -rw-r--r-- 3.5 KB
mac53c94.c -rw-r--r-- 15.6 KB
mac53c94.h -rw-r--r-- 4.9 KB
mac_esp.c -rw-r--r-- 16.7 KB
mac_scsi.c -rw-r--r-- 14.9 KB
mac_scsi.h -rw-r--r-- 1.6 KB
mca_53c9x.c -rw-r--r-- 13.3 KB
megaraid.c -rw-r--r-- 115.4 KB
megaraid.h -rw-r--r-- 28.8 KB
mesh.c -rw-r--r-- 52.9 KB
mesh.h -rw-r--r-- 3.9 KB
mvme147.c -rw-r--r-- 3.8 KB
mvme147.h -rw-r--r-- 632 bytes
mvme16x.c -rw-r--r-- 1.8 KB
mvme16x.h -rw-r--r-- 569 bytes
ncr53c8xx.c -rw-r--r-- 196.6 KB
ncr53c8xx.h -rw-r--r-- 3.2 KB
nsp32.c -rw-r--r-- 92.3 KB
nsp32.h -rw-r--r-- 22.4 KB
nsp32_debug.c -rw-r--r-- 7.3 KB
nsp32_io.h -rw-r--r-- 5.9 KB
oktagon_esp.c -rw-r--r-- 14.9 KB
oktagon_io.S -rw-r--r-- 3.3 KB
osst.c -rw-r--r-- 181.3 KB
osst.h -rw-r--r-- 23.9 KB
osst_detect.h -rw-r--r-- 232 bytes
osst_options.h -rw-r--r-- 4.1 KB
pas16.c -rw-r--r-- 17.9 KB
pas16.h -rw-r--r-- 4.8 KB
pci2000.c -rw-r--r-- 23.5 KB
pci2000.h -rw-r--r-- 6.0 KB
pci2220i.c -rw-r--r-- 89.3 KB
pci2220i.h -rw-r--r-- 1.4 KB
pluto.c -rw-r--r-- 8.8 KB
pluto.h -rw-r--r-- 988 bytes
ppa.c -rw-r--r-- 25.6 KB
ppa.h -rw-r--r-- 5.0 KB
psi240i.c -rw-r--r-- 20.6 KB
psi240i.h -rw-r--r-- 10.3 KB
psi_chip.h -rw-r--r-- 6.6 KB
psi_dale.h -rw-r--r-- 18.9 KB
psi_roy.h -rw-r--r-- 16.0 KB
ql1040_fw.h -rw-r--r-- 132.0 KB
ql12160_fw.h -rw-r--r-- 111.2 KB
ql1280_fw.h -rw-r--r-- 126.1 KB
qla1280.c -rw-r--r-- 135.6 KB
qla1280.h -rw-r--r-- 35.2 KB
qlogicfas.c -rw-r--r-- 5.7 KB
qlogicfas408.c -rw-r--r-- 15.0 KB
qlogicfas408.h -rw-r--r-- 4.6 KB
qlogicfc.c -rw-r--r-- 65.7 KB
qlogicfc_asm.c -rw-r--r-- 617.6 KB
qlogicisp.c -rw-r--r-- 53.1 KB
qlogicisp_asm.c -rw-r--r-- 128.5 KB
qlogicpti.c -rw-r--r-- 43.1 KB
qlogicpti.h -rw-r--r-- 18.9 KB
qlogicpti_asm.c -rw-r--r-- 73.5 KB
sata_nv.c -rw-r--r-- 15.9 KB
sata_promise.c -rw-r--r-- 16.7 KB
sata_promise.h -rw-r--r-- 3.8 KB
sata_qstor.c -rw-r--r-- 19.4 KB
sata_sil.c -rw-r--r-- 14.0 KB
sata_sis.c -rw-r--r-- 7.7 KB
sata_svw.c -rw-r--r-- 14.2 KB
sata_sx4.c -rw-r--r-- 39.5 KB
sata_uli.c -rw-r--r-- 7.6 KB
sata_via.c -rw-r--r-- 10.2 KB
sata_vsc.c -rw-r--r-- 11.0 KB
script_asm.pl -rw-r--r-- 28.5 KB
scsi.c -rw-r--r-- 36.6 KB
scsi.h -rw-r--r-- 1.2 KB
scsi_debug.c -rw-r--r-- 59.3 KB
scsi_debug.h -rw-r--r-- 950 bytes
scsi_devinfo.c -rw-r--r-- 18.9 KB
scsi_error.c -rw-r--r-- 54.6 KB
scsi_ioctl.c -rw-r--r-- 14.1 KB
scsi_lib.c -rw-r--r-- 52.7 KB
scsi_logging.h -rw-r--r-- 3.5 KB
scsi_module.c -rw-r--r-- 1.6 KB
scsi_priv.h -rw-r--r-- 5.3 KB
scsi_proc.c -rw-r--r-- 7.5 KB
scsi_scan.c -rw-r--r-- 41.7 KB
scsi_sysctl.c -rw-r--r-- 1015 bytes
scsi_sysfs.c -rw-r--r-- 20.0 KB
scsi_transport_fc.c -rw-r--r-- 50.9 KB
scsi_transport_iscsi.c -rw-r--r-- 11.6 KB
scsi_transport_spi.c -rw-r--r-- 27.8 KB
scsi_typedefs.h -rw-r--r-- 215 bytes
scsicam.c -rw-r--r-- 7.1 KB
sd.c -rw-r--r-- 47.0 KB
seagate.c -rw-r--r-- 46.3 KB
seagate.h -rw-r--r-- 596 bytes
sg.c -rw-r--r-- 85.5 KB
sgiwd93.c -rw-r--r-- 8.2 KB
sgiwd93.h -rw-r--r-- 589 bytes
sim710.c -rw-r--r-- 9.7 KB
sr.c -rw-r--r-- 24.5 KB
sr.h -rw-r--r-- 2.2 KB
sr_ioctl.c -rw-r--r-- 14.7 KB
sr_vendor.c -rw-r--r-- 8.4 KB
st.c -rw-r--r-- 121.7 KB
st.h -rw-r--r-- 5.8 KB
st_options.h -rw-r--r-- 3.7 KB
sun3_NCR5380.c -rw-r--r-- 92.8 KB
sun3_scsi.c -rw-r--r-- 13.9 KB
sun3_scsi.h -rw-r--r-- 9.7 KB
sun3_scsi_vme.c -rw-r--r-- 12.6 KB
sun3x_esp.c -rw-r--r-- 10.3 KB
sym53c416.c -rw-r--r-- 26.8 KB
sym53c416.h -rw-r--r-- 1.2 KB
sym53c8xx_comm.h -rw-r--r-- 18.0 KB
sym53c8xx_defs.h -rw-r--r-- 40.4 KB
t128.c -rw-r--r-- 11.7 KB
t128.h -rw-r--r-- 4.3 KB
tmscsim.c -rw-r--r-- 79.2 KB
tmscsim.h -rw-r--r-- 14.2 KB
u14-34f.c -rw-r--r-- 67.3 KB
ultrastor.c -rw-r--r-- 36.2 KB
ultrastor.h -rw-r--r-- 2.0 KB
wd33c93.c -rw-r--r-- 60.8 KB
wd33c93.h -rw-r--r-- 10.7 KB
wd7000.c -rw-r--r-- 50.6 KB
zalon.c -rw-r--r-- 5.0 KB

back to top