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 <bart.vanassche@sandisk.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6156 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2015-03-26 00:33:45 +00:00
parent 572869d64a
commit 5cc7555cd9
2 changed files with 15 additions and 19 deletions

View File

@@ -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",

View File

@@ -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 */