From 5cc7555cd9c3651bd3c1f7df25c3e39c084e4490 Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Thu, 26 Mar 2015 00:33:45 +0000 Subject: [PATCH] iscsi-scst: Rework sparse annotations Do not declare kernel pointers as __user but instead cast these to __user just before assigning these to iov_base. Signed-off-by: Bart Van Assche git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6156 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/kernel/iscsi.c | 14 +++++++------- iscsi-scst/kernel/nthread.c | 20 ++++++++------------ 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/iscsi-scst/kernel/iscsi.c b/iscsi-scst/kernel/iscsi.c index b102b3ae0..e77b72c08 100644 --- a/iscsi-scst/kernel/iscsi.c +++ b/iscsi-scst/kernel/iscsi.c @@ -1406,7 +1406,7 @@ static void cmnd_prepare_get_rejected_immed_data(struct iscsi_cmnd *cmnd) { struct iscsi_conn *conn = cmnd->conn; struct scatterlist *sg = cmnd->sg; - char __user *addr; + char *addr; u32 size; unsigned int i; @@ -1440,15 +1440,15 @@ static void cmnd_prepare_get_rejected_immed_data(struct iscsi_cmnd *cmnd) cmnd->own_sg = 1; } - addr = (char __force __user *)(page_address(sg_page(&sg[0]))); + addr = page_address(sg_page(&sg[0])); conn->read_size = size; for (i = 0; size > PAGE_SIZE; i++, size -= PAGE_SIZE) { /* We already checked pdu.datasize in check_segment_length() */ sBUG_ON(i >= ISCSI_CONN_IOV_MAX); - conn->read_iov[i].iov_base = addr; + conn->read_iov[i].iov_base = (void __force __user *)addr; conn->read_iov[i].iov_len = PAGE_SIZE; } - conn->read_iov[i].iov_base = addr; + conn->read_iov[i].iov_base = (void __force __user *)addr; conn->read_iov[i].iov_len = size; conn->read_msg.msg_iov = conn->read_iov; conn->read_msg.msg_iovlen = ++i; @@ -1552,7 +1552,7 @@ static int cmnd_prepare_recv_pdu(struct iscsi_conn *conn, i = 0; while (1) { unsigned int sg_len; - char __user *addr; + char *addr; if (unlikely(buff_offs >= bufflen)) { TRACE_DBG("Residual overflow (cmd %p, buff_offs %d, " @@ -1562,11 +1562,11 @@ static int cmnd_prepare_recv_pdu(struct iscsi_conn *conn, offset = 0; } - addr = (char __force __user *)(page_address(sg_page(&sg[idx]))); + addr = page_address(sg_page(&sg[idx])); EXTRACHECKS_BUG_ON(addr == NULL); sg_len = sg[idx].offset + sg[idx].length - offset; - conn->read_iov[i].iov_base = addr + offset; + conn->read_iov[i].iov_base = (void __force __user *)addr + offset; if (size <= sg_len) { TRACE_DBG("idx=%d, i=%d, offset=%u, size=%d, addr=%p", diff --git a/iscsi-scst/kernel/nthread.c b/iscsi-scst/kernel/nthread.c index 76bac980e..f7fea7522 100644 --- a/iscsi-scst/kernel/nthread.c +++ b/iscsi-scst/kernel/nthread.c @@ -613,9 +613,9 @@ static void start_close_conn(struct iscsi_conn *conn) } static inline void iscsi_conn_init_read(struct iscsi_conn *conn, - void __user *data, size_t len) + void *data, size_t len) { - conn->read_iov[0].iov_base = data; + conn->read_iov[0].iov_base = (void __force __user *)data; conn->read_iov[0].iov_len = len; conn->read_msg.msg_iov = conn->read_iov; conn->read_msg.msg_iovlen = 1; @@ -631,7 +631,7 @@ static void iscsi_conn_prepare_read_ahs(struct iscsi_conn *conn, /* ToDo: __GFP_NOFAIL ?? */ cmnd->pdu.ahs = kmalloc(asize, __GFP_NOFAIL|GFP_KERNEL); sBUG_ON(cmnd->pdu.ahs == NULL); - iscsi_conn_init_read(conn, (void __force __user *)cmnd->pdu.ahs, asize); + iscsi_conn_init_read(conn, cmnd->pdu.ahs, asize); return; } @@ -833,9 +833,8 @@ static int process_read_io(struct iscsi_conn *conn, int *closed) EXTRACHECKS_BUG_ON(conn->read_cmnd != NULL); cmnd = cmnd_alloc(conn, NULL); conn->read_cmnd = cmnd; - iscsi_conn_init_read(cmnd->conn, - (void __force __user *)&cmnd->pdu.bhs, - sizeof(cmnd->pdu.bhs)); + iscsi_conn_init_read(cmnd->conn, &cmnd->pdu.bhs, + sizeof(cmnd->pdu.bhs)); conn->read_state = RX_BHS; /* go through */ @@ -900,7 +899,7 @@ static int process_read_io(struct iscsi_conn *conn, int *closed) if (psz != 0) { TRACE_DBG("padding %d bytes", psz); iscsi_conn_init_read(conn, - (void __force __user *)&conn->rpadding, psz); + &conn->rpadding, psz); conn->read_state = RX_PADDING; } else if ((conn->ddigest_type & DIGEST_NONE) != 0) conn->read_state = RX_END; @@ -932,8 +931,7 @@ static int process_read_io(struct iscsi_conn *conn, int *closed) goto out; case RX_INIT_HDIGEST: - iscsi_conn_init_read(conn, - (void __force __user *)&cmnd->hdigest, sizeof(u32)); + iscsi_conn_init_read(conn, &cmnd->hdigest, sizeof(u32)); conn->read_state = RX_CHECK_HDIGEST; /* go through */ @@ -953,9 +951,7 @@ static int process_read_io(struct iscsi_conn *conn, int *closed) break; case RX_INIT_DDIGEST: - iscsi_conn_init_read(conn, - (void __force __user *)&cmnd->ddigest, - sizeof(u32)); + iscsi_conn_init_read(conn, &cmnd->ddigest, sizeof(u32)); conn->read_state = RX_CHECK_DDIGEST; /* go through */