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
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 |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...