@@ -2644,7 +2644,7 @@ static int resp_mode_sense(struct scsi_cmnd *scp,
2644
2644
unsigned char * ap ;
2645
2645
unsigned char arr [SDEBUG_MAX_MSENSE_SZ ];
2646
2646
unsigned char * cmd = scp -> cmnd ;
2647
- bool dbd , llbaa , msense_6 , is_disk , is_zbc , bad_pcode ;
2647
+ bool dbd , llbaa , msense_6 , is_disk , is_zbc ;
2648
2648
2649
2649
dbd = !!(cmd [1 ] & 0x8 ); /* disable block descriptors */
2650
2650
pcontrol = (cmd [2 ] & 0xc0 ) >> 6 ;
@@ -2708,7 +2708,6 @@ static int resp_mode_sense(struct scsi_cmnd *scp,
2708
2708
mk_sense_invalid_fld (scp , SDEB_IN_CDB , 3 , -1 );
2709
2709
return check_condition_result ;
2710
2710
}
2711
- bad_pcode = false;
2712
2711
2713
2712
switch (pcode ) {
2714
2713
case 0x1 : /* Read-Write error recovery page, direct access */
@@ -2723,15 +2722,17 @@ static int resp_mode_sense(struct scsi_cmnd *scp,
2723
2722
if (is_disk ) {
2724
2723
len = resp_format_pg (ap , pcontrol , target );
2725
2724
offset += len ;
2726
- } else
2727
- bad_pcode = true;
2725
+ } else {
2726
+ goto bad_pcode ;
2727
+ }
2728
2728
break ;
2729
2729
case 0x8 : /* Caching page, direct access */
2730
2730
if (is_disk || is_zbc ) {
2731
2731
len = resp_caching_pg (ap , pcontrol , target );
2732
2732
offset += len ;
2733
- } else
2734
- bad_pcode = true;
2733
+ } else {
2734
+ goto bad_pcode ;
2735
+ }
2735
2736
break ;
2736
2737
case 0xa : /* Control Mode page, all devices */
2737
2738
len = resp_ctrl_m_pg (ap , pcontrol , target );
@@ -2784,18 +2785,17 @@ static int resp_mode_sense(struct scsi_cmnd *scp,
2784
2785
}
2785
2786
break ;
2786
2787
default :
2787
- bad_pcode = true;
2788
- break ;
2789
- }
2790
- if (bad_pcode ) {
2791
- mk_sense_invalid_fld (scp , SDEB_IN_CDB , 2 , 5 );
2792
- return check_condition_result ;
2788
+ goto bad_pcode ;
2793
2789
}
2794
2790
if (msense_6 )
2795
2791
arr [0 ] = offset - 1 ;
2796
2792
else
2797
2793
put_unaligned_be16 ((offset - 2 ), arr + 0 );
2798
2794
return fill_from_dev_buffer (scp , arr , min_t (u32 , alloc_len , offset ));
2795
+
2796
+ bad_pcode :
2797
+ mk_sense_invalid_fld (scp , SDEB_IN_CDB , 2 , 5 );
2798
+ return check_condition_result ;
2799
2799
}
2800
2800
2801
2801
#define SDEBUG_MAX_MSELECT_SZ 512
0 commit comments