]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
scsi: core: Delete unnecessary buffer allocation for every loop iteration
authorYe Bin <yebin10@huawei.com>
Fri, 17 Jul 2020 09:09:21 +0000 (17:09 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 25 Jul 2020 02:09:57 +0000 (22:09 -0400)
No need to allocate buffer every loop iteration. Allocate buffer once and
reuse it.

Link: https://lore.kernel.org/r/20200717090921.29243-2-yebin10@huawei.com
Signed-off-by: Ye Bin <yebin10@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_logging.c

index c91fa3feb9300ecfe93864f2dc6718266c91a185..8ea44c6595efa7ce7f9bc7560b7351832668a573 100644 (file)
@@ -205,13 +205,9 @@ void scsi_print_command(struct scsi_cmnd *cmd)
                /* Print opcode in one line and use separate lines for CDB */
                off += scnprintf(logbuf + off, logbuf_len - off, "\n");
                dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf);
-               scsi_log_release_buffer(logbuf);
                for (k = 0; k < cmd->cmd_len; k += 16) {
                        size_t linelen = min(cmd->cmd_len - k, 16);
 
-                       logbuf = scsi_log_reserve_buffer(&logbuf_len);
-                       if (!logbuf)
-                               break;
                        off = sdev_format_header(logbuf, logbuf_len,
                                                 scmd_name(cmd),
                                                 cmd->request->tag);
@@ -224,9 +220,8 @@ void scsi_print_command(struct scsi_cmnd *cmd)
                        }
                        dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s",
                                   logbuf);
-                       scsi_log_release_buffer(logbuf);
                }
-               return;
+               goto out;
        }
        if (!WARN_ON(off > logbuf_len - 49)) {
                off += scnprintf(logbuf + off, logbuf_len - off, " ");
@@ -236,6 +231,7 @@ void scsi_print_command(struct scsi_cmnd *cmd)
        }
 out_printk:
        dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf);
+out:
        scsi_log_release_buffer(logbuf);
 }
 EXPORT_SYMBOL(scsi_print_command);