Patch "staging: lustre: echo_copy.._lsm() dereferences userland pointers directly" has been added to the 4.1-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
staging: lustre: echo_copy.._lsm() dereferences userland pointers directly
to the 4.1-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:
staging-lustre-echo_copy.._lsm-dereferences-userland-pointers-directly.patch
and it can be found in the queue-4.1 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
9225c0b7b976dd9ceac2b80727a60d8fcb906a62Mon Sep 17 00:00:00 2001
From: Al Viro <[email protected]>
Date: Tue, 1 Dec 2015 19:52:12 +0000
Subject: staging: lustre: echo_copy.._lsm() dereferences userland pointers directly
From: Al Viro <[email protected]>
commit 9225c0b7b976dd9ceac2b80727a60d8fcb906a62 upstream.
missing get_user()
--- drivers/staging/lustre/lustre/obdecho/echo_client.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
drivers/staging/lustre/lustre/obdecho/echo_client.c +11 -9
@@ -1268,6 +1268,7 @@ static int echo_copyout_lsm(struct lov_stripe_md *lsm, void *_ulsm, int ulsm_nob) { struct lov_stripe_md *ulsm = _ulsm; +struct lov_oinfo **p;int nob, i; nob = offsetof(struct lov_stripe_md, lsm_oinfo[lsm->lsm_stripe_count]);
@@ -1277,9 +1278,10 @@ echo_copyout_lsm(struct lov_stripe_md *lif (copy_to_user (ulsm, lsm,sizeof (*ulsm)))return -EFAULT ; -for (i =0 ; i < lsm->lsm_stripe_count; i++) { -if (copy_to_user (ulsm->lsm_oinfo[i], lsm->lsm_oinfo[i], -sizeof (lsm->lsm_oinfo[0 ]))) +for (i =0 , p = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++, p++) { +struct lov_oinfo __user *up; +if (get_user (up, ulsm->lsm_oinfo + i) || +copy_to_user (up, *p,sizeof (struct lov_oinfo )))return -EFAULT ; }return 0 ;
@@ -1287,9 +1289,10 @@ echo_copyout_lsm(struct lov_stripe_md *lstatic int echo_copyin_lsm (struct echo_device *ed,struct lov_stripe_md *lsm, -void *ulsm,int ulsm_nob) +struct lov_stripe_md __user *ulsm,int ulsm_nob) {struct echo_client_obd *ec = ed->ed_ec; +struct lov_oinfo **p;int i;if (ulsm_nob <sizeof (*lsm))
@@ -1305,11 +1308,10 @@ echo_copyin_lsm(struct echo_device *ed,return -EINVAL ; -for (i =0 ; i < lsm->lsm_stripe_count; i++) { -if (copy_from_user (lsm->lsm_oinfo[i], - ((struct lov_stripe_md *)ulsm)-> \ - lsm_oinfo[i], -sizeof (lsm->lsm_oinfo[0 ]))) +for (i =0 , p = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++, p++) { +struct lov_oinfo __user *up; +if (get_user (up, ulsm->lsm_oinfo + i) || +copy_from_user (*p, up,sizeof (struct lov_oinfo )))return -EFAULT ; }return 0 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/staging-lustre-echo_copy.._lsm-dereferences-userland-pointers-directly.patch