}
 }
 
+/* Size in bytes of the sg-list stored in the scsi-mq command-private data. */
+static unsigned int scsi_mq_sgl_size(struct Scsi_Host *shost)
+{
+       return min_t(unsigned int, shost->sg_tablesize, SG_CHUNK_SIZE) *
+               sizeof(struct scatterlist);
+}
+
 static int scsi_mq_prep_fn(struct request *req)
 {
        struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(req);
        cmd->sdb.table.sgl = sg;
 
        if (scsi_host_get_prot(shost)) {
-               cmd->prot_sdb = (void *)sg +
-                       min_t(unsigned int,
-                             shost->sg_tablesize, SG_CHUNK_SIZE) *
-                       sizeof(struct scatterlist);
+               cmd->prot_sdb = (void *)sg + scsi_mq_sgl_size(shost);
                memset(cmd->prot_sdb, 0, sizeof(struct scsi_data_buffer));
 
                cmd->prot_sdb->table.sgl =
 
 int scsi_mq_setup_tags(struct Scsi_Host *shost)
 {
-       unsigned int cmd_size, sgl_size, tbl_size;
+       unsigned int cmd_size, sgl_size;
 
-       tbl_size = shost->sg_tablesize;
-       if (tbl_size > SG_CHUNK_SIZE)
-               tbl_size = SG_CHUNK_SIZE;
-       sgl_size = tbl_size * sizeof(struct scatterlist);
+       sgl_size = scsi_mq_sgl_size(shost);
        cmd_size = sizeof(struct scsi_cmnd) + shost->hostt->cmd_size + sgl_size;
        if (scsi_host_get_prot(shost))
                cmd_size += sizeof(struct scsi_data_buffer) + sgl_size;