Patch "scsi: sg: factor out sg_fill_request_table()" has been added to the 3.18-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
scsi: sg: factor out sg_fill_request_table()
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
scsi-sg-factor-out-sg_fill_request_table.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
4759df905a474d245752c9dc94288e779b8734ddMon Sep 17 00:00:00 2001
From: Hannes Reinecke <[email protected]>
Date: Fri, 15 Sep 2017 14:05:15 +0200
Subject: scsi: sg: factor out sg_fill_request_table()
From: Hannes Reinecke <[email protected]>
commit 4759df905a474d245752c9dc94288e779b8734dd upstream.
Factor out sg_fill_request_table() for better readability.
[mkp: typos, applied by hand]
--- drivers/scsi/sg.c | 61 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 26 deletions(-)
drivers/scsi/sg.c +35 -26
@@ -854,6 +854,40 @@ static int max_sectors_bytes(struct requreturn max_sectors <<9 ; } +static void +sg_fill_request_table (Sg_fd *sfp,sg_req_info_t *rinfo) +{ +Sg_request *srp; +int val; +unsigned int ms; + + val =0 ; +list_for_each_entry (srp, &sfp->rq_list, entry) { +if (val >SG_MAX_QUEUE ) +break ; +memset (&rinfo[val],0 ,SZ_SG_REQ_INFO ); + rinfo[val].req_state = srp->done +1 ; + rinfo[val].problem = + srp->header.masked_status & + srp->header.host_status & + srp->header.driver_status; +if (srp->done) + rinfo[val].duration = + srp->header.duration; +else { + ms =jiffies_to_msecs (jiffies); + rinfo[val].duration = + (ms > srp->header.duration) ? + (ms - srp->header.duration) :0 ; + } + rinfo[val].orphan = srp->orphan; + rinfo[val].sg_io_owned = srp->sg_io_owned; + rinfo[val].pack_id = srp->header.pack_id; + rinfo[val].usr_ptr = srp->header.usr_ptr; + val++; + } +} +static long sg_ioctl (struct file *filp,unsigned int cmd_in,unsigned long arg) {
@@ -1047,38 +1081,13 @@ sg_ioctl(struct file *filp, unsigned intreturn -EFAULT ; else {sg_req_info_t *rinfo; -unsigned int ms; rinfo =kmalloc (SZ_SG_REQ_INFO *SG_MAX_QUEUE ,GFP_KERNEL );if (!rinfo)return -ENOMEM ;read_lock_irqsave (&sfp->rq_list_lock, iflags); - val =0 ; -list_for_each_entry (srp, &sfp->rq_list, entry) { -if (val >=SG_MAX_QUEUE ) -break ; -memset (&rinfo[val],0 ,SZ_SG_REQ_INFO ); - rinfo[val].req_state = srp->done +1 ; - rinfo[val].problem = - srp->header.masked_status & - srp->header.host_status & - srp->header.driver_status; -if (srp->done) - rinfo[val].duration = - srp->header.duration; -else { - ms =jiffies_to_msecs (jiffies); - rinfo[val].duration = - (ms > srp->header.duration) ? - (ms - srp->header.duration) :0 ; - } - rinfo[val].orphan = srp->orphan; - rinfo[val].sg_io_owned = srp->sg_io_owned; - rinfo[val].pack_id = srp->header.pack_id; - rinfo[val].usr_ptr = srp->header.usr_ptr; - val++; - } +sg_fill_request_table (sfp, rinfo);read_unlock_irqrestore (&sfp->rq_list_lock, iflags); result =__copy_to_user (p, rinfo,SZ_SG_REQ_INFO *SG_MAX_QUEUE );
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/scsi-sg-use-standard-lists-for-sg_requests.patch queue-3.18/scsi-sg-factor-out-sg_fill_request_table.patch queue-3.18/skd-submit-requests-to-firmware-before-triggering-the-doorbell.patch queue-3.18/scsi-sg-remove-save_scat_len.patch queue-3.18/block-relax-a-check-in-blk_start_queue.patch queue-3.18/scsi-sg-fixup-infoleak-when-using-sg_get_request_table.patch queue-3.18/skd-avoid-that-module-unloading-triggers-a-use-after-free.patch