Loading drivers/scsi/scsi_debug.c +21 −32 Original line number Diff line number Diff line Loading @@ -2823,31 +2823,27 @@ static const char * scsi_debug_info(struct Scsi_Host * shp) /* scsi_debug_proc_info * Used if the driver currently has no own support for /proc/scsi */ static int scsi_debug_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) static int scsi_debug_write_info(struct Scsi_Host *host, char *buffer, int length) { int len, pos, begin; int orig_length; orig_length = length; if (inout == 1) { char arr[16]; int opts; int minLen = length > 15 ? 15 : length; if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) return -EACCES; memcpy(arr, buffer, minLen); arr[minLen] = '\0'; if (1 != sscanf(arr, "%d", &pos)) if (1 != sscanf(arr, "%d", &opts)) return -EINVAL; scsi_debug_opts = pos; scsi_debug_opts = opts; if (scsi_debug_every_nth != 0) scsi_debug_cmnd_count = 0; return length; } begin = 0; pos = len = sprintf(buffer, "scsi_debug adapter driver, version " static int scsi_debug_show_info(struct seq_file *m, struct Scsi_Host *host) { seq_printf(m, "scsi_debug adapter driver, version " "%s [%s]\n" "num_tgts=%d, shared (ram) size=%d MB, opts=0x%x, " "every_nth=%d(curr:%d)\n" Loading @@ -2862,15 +2858,7 @@ static int scsi_debug_proc_info(struct Scsi_Host *host, char *buffer, char **sta scsi_debug_sector_size, sdebug_cylinders_per, sdebug_heads, sdebug_sectors_per, num_aborts, num_dev_resets, num_bus_resets, num_host_resets, dix_reads, dix_writes, dif_errors); if (pos < offset) { len = 0; begin = pos; } *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); if (len > length) len = length; return len; return 0; } static ssize_t sdebug_delay_show(struct device_driver * ddp, char * buf) Loading Loading @@ -3957,7 +3945,8 @@ int scsi_debug_queuecommand_lck(struct scsi_cmnd *SCpnt, done_funct_t done) static DEF_SCSI_QCMD(scsi_debug_queuecommand) static struct scsi_host_template sdebug_driver_template = { .proc_info = scsi_debug_proc_info, .show_info = scsi_debug_show_info, .write_info = scsi_debug_write_info, .proc_name = sdebug_proc_name, .name = "SCSI DEBUG", .info = scsi_debug_info, Loading Loading
drivers/scsi/scsi_debug.c +21 −32 Original line number Diff line number Diff line Loading @@ -2823,31 +2823,27 @@ static const char * scsi_debug_info(struct Scsi_Host * shp) /* scsi_debug_proc_info * Used if the driver currently has no own support for /proc/scsi */ static int scsi_debug_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) static int scsi_debug_write_info(struct Scsi_Host *host, char *buffer, int length) { int len, pos, begin; int orig_length; orig_length = length; if (inout == 1) { char arr[16]; int opts; int minLen = length > 15 ? 15 : length; if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) return -EACCES; memcpy(arr, buffer, minLen); arr[minLen] = '\0'; if (1 != sscanf(arr, "%d", &pos)) if (1 != sscanf(arr, "%d", &opts)) return -EINVAL; scsi_debug_opts = pos; scsi_debug_opts = opts; if (scsi_debug_every_nth != 0) scsi_debug_cmnd_count = 0; return length; } begin = 0; pos = len = sprintf(buffer, "scsi_debug adapter driver, version " static int scsi_debug_show_info(struct seq_file *m, struct Scsi_Host *host) { seq_printf(m, "scsi_debug adapter driver, version " "%s [%s]\n" "num_tgts=%d, shared (ram) size=%d MB, opts=0x%x, " "every_nth=%d(curr:%d)\n" Loading @@ -2862,15 +2858,7 @@ static int scsi_debug_proc_info(struct Scsi_Host *host, char *buffer, char **sta scsi_debug_sector_size, sdebug_cylinders_per, sdebug_heads, sdebug_sectors_per, num_aborts, num_dev_resets, num_bus_resets, num_host_resets, dix_reads, dix_writes, dif_errors); if (pos < offset) { len = 0; begin = pos; } *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); if (len > length) len = length; return len; return 0; } static ssize_t sdebug_delay_show(struct device_driver * ddp, char * buf) Loading Loading @@ -3957,7 +3945,8 @@ int scsi_debug_queuecommand_lck(struct scsi_cmnd *SCpnt, done_funct_t done) static DEF_SCSI_QCMD(scsi_debug_queuecommand) static struct scsi_host_template sdebug_driver_template = { .proc_info = scsi_debug_proc_info, .show_info = scsi_debug_show_info, .write_info = scsi_debug_write_info, .proc_name = sdebug_proc_name, .name = "SCSI DEBUG", .info = scsi_debug_info, Loading