freebsd-skq/sbin/camcontrol
ken 74fd15a8f4 Fix a problem in camcontrol(8) that cropped up with r307684.
In r307684, I changed rescan_or_reset_bus() to bzero stack-allocated CCBs
before sending them to the kernel because there was stack garbage in there
that wound up meaning that bogus CCB flags were set.

While this fixed the 'camcontrol rescan all' case (XPT_DEV_MATCH CCBs were
failing previously), it broke the 'camcontrol rescan 0' (or any other
number) case when INVARIANTS are turned on.  Rescanning a single bus
reliably produced an assert in cam_periph_runccb():

panic: cam_periph_runccb: ccb=0xfffff80044ffe000, func_code=0x708, flags=0xffffdde0

The flags values don't make sense from the code.  Changing the CCBs in
rescan_or_reset_bus() from stack to heap allocated avoids the problem.

It would be better to understand why userland stack allocated CCBs don't
work properly, since there may be other code that breaks if stack allocated
CCBs don't work.

sbin/camcontrol/camcontrol.c:
	In rescan_or_reset_bus(), allocate the CCBs using malloc(3) instead
	of on the stack to avoid an assertion in cam_periph_runccb().

MFC after:	3 days
Sponsored by:	Spectra Logic
2016-10-21 18:54:56 +00:00
..
attrib.c Fix multiple Coverity Out-of-bounds access false postive issues in CAM 2016-05-24 00:57:11 +00:00
camcontrol.8 Add support for managing Shingled Magnetic Recording (SMR) drives. 2016-05-19 14:08:36 +00:00
camcontrol.c Fix a problem in camcontrol(8) that cropped up with r307684. 2016-10-21 18:54:56 +00:00
camcontrol.h Add support for managing Shingled Magnetic Recording (SMR) drives. 2016-05-19 14:08:36 +00:00
epc.c Fix a couple of new instances of a false positive Coverity buffer 2016-05-25 15:43:01 +00:00
fwdownload.c Fix multiple Coverity Out-of-bounds access false postive issues in CAM 2016-05-24 00:57:11 +00:00
Makefile Add support for managing Shingled Magnetic Recording (SMR) drives. 2016-05-19 14:08:36 +00:00
Makefile.depend Add META_MODE support. 2015-06-13 19:20:56 +00:00
modeedit.c Limit RESOLUTION_MAX to INT_MAX, not UINT_MAX (all spelled out) so the 2015-10-25 04:37:00 +00:00
persist.c Fix multiple Coverity Out-of-bounds access false postive issues in CAM 2016-05-24 00:57:11 +00:00
progress.c Use nitems() from sys/param.h. 2016-04-19 11:12:57 +00:00
progress.h
util.c
zone.c Fix a couple of new instances of a false positive Coverity buffer 2016-05-25 15:43:01 +00:00