Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Feb 1995 08:44:38 +0200 (SAT)
From:      John Hay <jhay@mikom.csir.co.za>
To:        bugs@FreeBSD.org, hackers@FreeBSD.org
Subject:   BUG + fix in scsi_base.c
Message-ID:  <199502150644.IAA08039@zibbi.mikom.csir.co.za>

next in thread | raw e-mail | index | archive | help
>From a week or two ago I got kernel panics as soon as I tried to access my
tape drive. I traced it to sys/scsi/scsi_base.c where some code were added
to print the return values of the sense command. My tape drive returned a
extended flags value of 0x20, so the key that is the lower 4 bits, is 0.
The code uses "key-1" to index into a table and then the kernel go to never-
never land.

Here is a fix for this. Will somebody please apply it? 

-- 
John Hay -- jhay@mikom.csir.co.za


*** sys/scsi/scsi_base.c.org	Wed Feb  1 08:17:29 1995
--- sys/scsi/scsi_base.c	Wed Feb 15 08:29:19 1995
***************
*** 661,667 ****
  	 */
  	static char *sense_key_text[] =
  	{
! 		"RECOVERED ERROR",
  	    "NOT READY", "MEDIUM ERROR",
  	    "HARDWARE FAILURE", "ILLEGAL REQUEST",
  	    "UNIT ATTENTION", "DATA PROTECT",
--- 661,667 ----
  	 */
  	static char *sense_key_text[] =
  	{
! 	    "NO SENSE", "RECOVERED ERROR",
  	    "NOT READY", "MEDIUM ERROR",
  	    "HARDWARE FAILURE", "ILLEGAL REQUEST",
  	    "UNIT ATTENTION", "DATA PROTECT",
***************
*** 686,692 ****
  
  	case 0x70:
  
! 		printf("%s", sense_key_text[key - 1]);
  		info = ntohl(*((long *) ext->info));
  
  		if (sense->error_code & SSD_ERRCODE_VALID) {
--- 686,692 ----
  
  	case 0x70:
  
! 		printf("%s", sense_key_text[key]);
  		info = ntohl(*((long *) ext->info));
  
  		if (sense->error_code & SSD_ERRCODE_VALID) {




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199502150644.IAA08039>