svn commit: r282227 - head/sys/cam/scsi

Scott Long scott4long at yahoo.com
Wed Apr 29 16:55:08 UTC 2015


This commit is broken, please revert:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address	= 0x21000002d8
fault code		= supervisor read data, page not present
instruction pointer	= 0x20:0xffffffff802fd074
stack pointer	        = 0x28:0xfffffe100678f960
frame pointer	        = 0x28:0xfffffe100678f9e0
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 2 (doneq0)
[ thread pid 2 tid 100025 ]
Stopped at      scsi_scan_bus+0x54:     movq    0x58(%rax),%rdi
db> bt
Tracing pid 2 tid 100025 td 0xfffff8000d3ac940
scsi_scan_bus() at scsi_scan_bus+0x54/frame 0xfffffe100678f9e0
xpt_done_process() at xpt_done_process+0x521/frame 0xfffffe100678fa20
xpt_done_td() at xpt_done_td+0xf6/frame 0xfffffe100678fa70
fork_exit() at fork_exit+0x71/frame 0xfffffe100678fab0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe100678fab0
--- trap 0, rip = 0, rsp = 0xfffffe100678fb70, rbp = 0 ---
db> 


> On Apr 29, 2015, at 9:46 AM, Pedro F. Giffuni <pfg at FreeBSD.org> wrote:
> 
> Author: pfg
> Date: Wed Apr 29 15:46:57 2015
> New Revision: 282227
> URL: https://svnweb.freebsd.org/changeset/base/282227
> 
> Log:
>  Fix memory leak in scsi_scan_bus()
> 
>  CID:	1007770
>  PR:	199671
> 
> Modified:
>  head/sys/cam/scsi/scsi_xpt.c
> 
> Modified: head/sys/cam/scsi/scsi_xpt.c
> ==============================================================================
> --- head/sys/cam/scsi/scsi_xpt.c	Wed Apr 29 15:41:19 2015	(r282226)
> +++ head/sys/cam/scsi/scsi_xpt.c	Wed Apr 29 15:46:57 2015	(r282227)
> @@ -2008,6 +2008,7 @@ scsi_scan_bus(struct cam_periph *periph,
> 				       " with status %#x, bus scan halted\n",
> 				       status);
> 				free(scan_info, M_CAMXPT);
> +				scan_info = NULL;
> 				request_ccb->ccb_h.status = status;
> 				xpt_free_ccb(work_ccb);
> 				xpt_done(request_ccb);
> @@ -2017,6 +2018,7 @@ scsi_scan_bus(struct cam_periph *periph,
> 			if (work_ccb == NULL) {
> 				xpt_free_ccb((union ccb *)scan_info->cpi);
> 				free(scan_info, M_CAMXPT);
> +				scan_info = NULL;
> 				xpt_free_path(path);
> 				request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
> 				xpt_done(request_ccb);
> @@ -2032,6 +2034,7 @@ scsi_scan_bus(struct cam_periph *periph,
> 			xpt_action(work_ccb);
> 		}
> 
> +		free(scan_info, M_CAMXPT);
> 		mtx_lock(mtx);
> 		break;
> 	}
> 



More information about the svn-src-all mailing list