cvs commit: src/sys/bus/cam cam_queue.c cam_queue.h cam_sim.c cam_sim.h cam_xpt.c src/sys/bus/cam/scsi scsi_low.c src/sys/dev/disk/advansys advansys.c adwcam.c src/sys/dev/disk/aha aha.c src/sys/dev/disk/ahb ahb.c src/sys/dev/disk/aic aic.c ...
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Mar 14 17:11:19 PST 2004
dillon 2004/03/14 17:10:45 PST
DragonFly src repository
Modified files:
sys/bus/cam cam_queue.c cam_queue.h cam_sim.c
cam_sim.h cam_xpt.c
sys/bus/cam/scsi scsi_low.c
sys/dev/disk/advansys advansys.c adwcam.c
sys/dev/disk/aha aha.c
sys/dev/disk/ahb ahb.c
sys/dev/disk/aic aic.c
sys/dev/disk/aic7xxx ahc_eisa.c ahc_pci.c ahd_pci.c aic79xx.c
aic79xx_osm.c aic7xxx.c aic7xxx_osm.c
sys/dev/disk/amd amd.c
sys/dev/disk/ata ata-all.c ata-disk.c atapi-all.c
atapi-cam.c
sys/dev/disk/buslogic bt.c
sys/dev/disk/ccd ccd.c
sys/dev/disk/fd fd.c
sys/dev/disk/i386/bs bsfunc.c bsif.c
sys/dev/disk/isp isp_freebsd.c isp_pci.c
sys/dev/disk/ispfw ispfw.c
sys/dev/disk/mpt mpt_freebsd.c
sys/dev/disk/ncr ncr.c
sys/dev/disk/sbp sbp.c
sys/dev/disk/simos simos.c
sys/dev/disk/sym sym_hipd.c
sys/dev/disk/trm trm.c
sys/dev/disk/vpo immio.c vpo.c vpoio.c
sys/dev/usbmisc/uhid uhid.c
sys/dev/usbmisc/ukbd ukbd.c
sys/dev/usbmisc/umass umass.c
sys/dev/usbmisc/umct umct.c
sys/dev/usbmisc/ums ums.c
Log:
The cam_sim structure was being deallocated unconditionally by device
driver detach routines. The problem with this is that part of the CAM
bus structure may still be active (for example, with pending timeout()'s),
and even though the bus, target, and device is freed, since the sim IS
freed any accesses through the sim will hit 0xdeadc0de. This case most often
occurs with USB UMASS devices.
The CAM_XPT and CAM_SIM layer has been revamped. CAM_DEV_UNCONFIGURED is now
accounted for in the device->refcount, and the cam_sim structure is now
ref-counted as well. Additionally, the cam_simq* code which handles the
device queues has been revamped to refcount as well, so shared device queues
(raid and multi-channel devices) are not free()'d before all references have
gone away.
scsi_low free'd its cam_sim twice. Fixed.
USB was improperly using M_NOWAIT. All M_NOWAIT instances have been renamed
to M_INTWAIT.
Revision Changes Path
1.5 +13 -4 src/sys/bus/cam/cam_queue.c
1.3 +4 -4 src/sys/bus/cam/cam_queue.h
1.6 +41 -7 src/sys/bus/cam/cam_sim.c
1.4 +9 -4 src/sys/bus/cam/cam_sim.h
1.11 +49 -42 src/sys/bus/cam/cam_xpt.c
1.9 +7 -6 src/sys/bus/cam/scsi/scsi_low.c
1.4 +4 -15 src/sys/dev/disk/advansys/advansys.c
1.5 +6 -25 src/sys/dev/disk/advansys/adwcam.c
1.6 +6 -14 src/sys/dev/disk/aha/aha.c
1.5 +5 -19 src/sys/dev/disk/ahb/ahb.c
1.5 +5 -16 src/sys/dev/disk/aic/aic.c
1.4 +1 -3 src/sys/dev/disk/aic7xxx/ahc_eisa.c
1.5 +1 -3 src/sys/dev/disk/aic7xxx/ahc_pci.c
1.5 +1 -3 src/sys/dev/disk/aic7xxx/ahd_pci.c
1.5 +11 -55 src/sys/dev/disk/aic7xxx/aic79xx.c
1.4 +7 -19 src/sys/dev/disk/aic7xxx/aic79xx_osm.c
1.5 +10 -48 src/sys/dev/disk/aic7xxx/aic7xxx.c
1.4 +10 -22 src/sys/dev/disk/aic7xxx/aic7xxx_osm.c
1.4 +3 -3 src/sys/dev/disk/amd/amd.c
1.14 +11 -4 src/sys/dev/disk/ata/ata-all.c
1.14 +3 -0 src/sys/dev/disk/ata/ata-disk.c
1.10 +3 -11 src/sys/dev/disk/ata/atapi-all.c
1.6 +6 -8 src/sys/dev/disk/ata/atapi-cam.c
1.6 +5 -9 src/sys/dev/disk/buslogic/bt.c
1.14 +4 -14 src/sys/dev/disk/ccd/ccd.c
1.14 +3 -8 src/sys/dev/disk/fd/fd.c
1.6 +1 -9 src/sys/dev/disk/i386/bs/bsfunc.c
1.6 +4 -9 src/sys/dev/disk/i386/bs/bsif.c
1.8 +8 -13 src/sys/dev/disk/isp/isp_freebsd.c
1.4 +2 -12 src/sys/dev/disk/isp/isp_pci.c
1.5 +1 -4 src/sys/dev/disk/ispfw/ispfw.c
1.4 +5 -17 src/sys/dev/disk/mpt/mpt_freebsd.c
1.7 +6 -17 src/sys/dev/disk/ncr/ncr.c
1.10 +15 -32 src/sys/dev/disk/sbp/sbp.c
1.5 +3 -3 src/sys/dev/disk/simos/simos.c
1.6 +6 -7 src/sys/dev/disk/sym/sym_hipd.c
1.5 +3 -3 src/sys/dev/disk/trm/trm.c
1.5 +2 -5 src/sys/dev/disk/vpo/immio.c
1.4 +2 -2 src/sys/dev/disk/vpo/vpo.c
1.5 +2 -5 src/sys/dev/disk/vpo/vpoio.c
1.10 +3 -7 src/sys/dev/usbmisc/uhid/uhid.c
1.7 +5 -8 src/sys/dev/usbmisc/ukbd/ukbd.c
1.9 +13 -6 src/sys/dev/usbmisc/umass/umass.c
1.2 +1 -3 src/sys/dev/usbmisc/umct/umct.c
1.9 +2 -12 src/sys/dev/usbmisc/ums/ums.c
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_queue.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_queue.h.diff?r1=1.2&r2=1.3&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_sim.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_sim.h.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/cam_xpt.c.diff?r1=1.10&r2=1.11&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/bus/cam/scsi/scsi_low.c.diff?r1=1.8&r2=1.9&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/advansys/advansys.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/advansys/adwcam.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aha/aha.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ahb/ahb.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic/aic.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/ahc_eisa.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/ahc_pci.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/ahd_pci.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/aic79xx.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/aic79xx_osm.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/aic7xxx.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/aic7xxx/aic7xxx_osm.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/amd/amd.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ata/ata-all.c.diff?r1=1.13&r2=1.14&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ata/ata-disk.c.diff?r1=1.13&r2=1.14&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ata/atapi-all.c.diff?r1=1.9&r2=1.10&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ata/atapi-cam.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/buslogic/bt.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ccd/ccd.c.diff?r1=1.13&r2=1.14&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/fd/fd.c.diff?r1=1.13&r2=1.14&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/i386/bs/bsfunc.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/i386/bs/bsif.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/isp/isp_freebsd.c.diff?r1=1.7&r2=1.8&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/isp/isp_pci.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ispfw/ispfw.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/mpt/mpt_freebsd.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ncr/ncr.c.diff?r1=1.6&r2=1.7&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/sbp/sbp.c.diff?r1=1.9&r2=1.10&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/simos/simos.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/sym/sym_hipd.c.diff?r1=1.5&r2=1.6&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/trm/trm.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/vpo/immio.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/vpo/vpo.c.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/vpo/vpoio.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/usbmisc/uhid/uhid.c.diff?r1=1.9&r2=1.10&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/usbmisc/ukbd/ukbd.c.diff?r1=1.6&r2=1.7&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/usbmisc/umass/umass.c.diff?r1=1.8&r2=1.9&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/usbmisc/umct/umct.c.diff?r1=1.1&r2=1.2&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/usbmisc/ums/ums.c.diff?r1=1.8&r2=1.9&f=h
More information about the Commits
mailing list