Patch "scsi: sg: disable SET_FORCE_LOW_DMA" 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: disable SET_FORCE_LOW_DMA
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-disable-set_force_low_dma.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
745dfa0d8ec26b24f3304459ff6e9eacc5c8351bMon Sep 17 00:00:00 2001
From: Hannes Reinecke <[email protected]>
Date: Fri, 7 Apr 2017 09:34:12 +0200
Subject: scsi: sg: disable SET_FORCE_LOW_DMA
From: Hannes Reinecke <[email protected]>
commit 745dfa0d8ec26b24f3304459ff6e9eacc5c8351b upstream.
The ioctl SET_FORCE_LOW_DMA has never worked since the initial git check-in, and the respective setting is nowadays handled correctly. So disable it entirely.
--- drivers/scsi/sg.c | 30 +++++++++--------------------- include/scsi/sg.h | 1 - 2 files changed, 9 insertions(+), 22 deletions(-)
drivers/scsi/sg.c +9 -21
@@ -160,7 +160,6 @@ typedef struct sg_fd { /* holds the stastruct list_head rq_list;/* head of request list */ struct fasync_struct *async_qp;/* used by asynchronous notification */ Sg_request req_arr[SG_MAX_QUEUE ];/* used as singly-linked list */ -char low_dma;/* as in parent but possibly overridden to 1 */ char force_packid;/* 1 -> pack_id input to read(), 0 -> ignored */ char cmd_q;/* 1 -> allow command queuing, 0 -> don't */ unsigned char next_cmd_len;/* 0: automatic, >0: use on next write() */
@@ -947,24 +946,14 @@ sg_ioctl(struct file *filp, unsigned int/* strange ..., for backward compatibility */ return sfp->timeout_user;case SG_SET_FORCE_LOW_DMA : - result =get_user (val, ip); -if (result) -return result; -if (val) { - sfp->low_dma =1 ; -if ((0 == sfp->low_dma) && !sfp->res_in_use) { - val = (int ) sfp->reserve.bufflen; -sg_remove_scat (sfp, &sfp->reserve); -sg_build_reserve (sfp, val); - } - }else { -if (atomic_read (&sdp->detaching)) -return -ENODEV ; - sfp->low_dma = sdp->device->host->unchecked_isa_dma; - } +/* +* N.B. This ioctl never worked properly, but failed to +* return an error value. So returning '0' to keep compability +* with legacy applications. +*/ return 0 ;case SG_GET_LOW_DMA : -return put_user ((int ) sfp->low_dma, ip); +return put_user ((int ) sdp->device->host->unchecked_isa_dma, ip);case SG_GET_SCSI_ID :if (!access_ok (VERIFY_WRITE , p,sizeof (sg_scsi_id_t)))return -EFAULT ;
@@ -1916,6 +1905,7 @@ sg_build_indirect(Sg_scatter_hold * schpint sg_tablesize = sfp->parentdp->sg_tablesize;int blk_size = buff_size, order;gfp_t gfp_mask =GFP_ATOMIC | __GFP_COMP | __GFP_NOWARN; +struct sg_device *sdp = sfp->parentdp;if (blk_size <0 )return -EFAULT ;
@@ -1941,7 +1931,7 @@ sg_build_indirect(Sg_scatter_hold * schp scatter_elem_sz_prev = num; } -if (sfp->low_dma) +if (sdp->device->host->unchecked_isa_dma) gfp_mask |=GFP_DMA ;if (!capable (CAP_SYS_ADMIN ) || !capable (CAP_SYS_RAWIO ))
@@ -2204,8 +2194,6 @@ sg_add_sfp(Sg_device * sdp) sfp->timeout =SG_DEFAULT_TIMEOUT ; sfp->timeout_user =SG_DEFAULT_TIMEOUT_USER ; sfp->force_packid =SG_DEF_FORCE_PACK_ID ; - sfp->low_dma = (SG_DEF_FORCE_LOW_DMA ==0 ) ? - sdp->device->host->unchecked_isa_dma :1 ; sfp->cmd_q =SG_DEF_COMMAND_Q ; sfp->keep_orphan =SG_DEF_KEEP_ORPHAN ; sfp->parentdp = sdp;
@@ -2664,7 +2652,7 @@ static void sg_proc_debug_helper(structjiffies_to_msecs (fp->timeout), fp->reserve.bufflen, (int ) fp->reserve.k_use_sg, - (int) fp->low_dma); + (int) sdp->device->host->unchecked_isa_dma);seq_printf (s," cmd_q=%d f_packid=%d k_orphan=%d closed=0\n" , (int ) fp->cmd_q, (int ) fp->force_packid, (int ) fp->keep_orphan);
include/scsi/sg.h +0 -1
@@ -194,7 +194,6 @@ typedef struct sg_req_info { /* used by#define SG_DEFAULT_RETRIES 0/* Defaults, commented if they differ from original sg driver */ -#define SG_DEF_FORCE_LOW_DMA 0/* was 1 -> memory below 16MB on i386 */ #define SG_DEF_FORCE_PACK_ID 0#define SG_DEF_KEEP_ORPHAN 0#define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ/* load time option */
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/scsi-sg-disable-set_force_low_dma.patch