On Fri, 2008-04-18 at 11:17 +0800, Herbert Xu wrote:
> This patch avoids the correctness issue on the user-space mapping
> by just copying the memory.
> 
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 4c15dc4..d75cfd2 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c

> +                     virt = kmap_atomic(f->page, KM_USER0);
> +                     err = memcpy_fromiovec(virt + f->size, iv, copy);
> +                     kunmap_atomic(virt, KM_USER0);

Seeing an oops from this; fix below.

Cheers,
Mark.

Subject: [PATCH 1/1] tun: Do not use kmap_atomic() since memcpy_fromiovec() can 
sleep

Signed-off-by: Mark McLoughlin <[EMAIL PROTECTED]>
---
 drivers/net/tun.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 151b409..aff338e 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -322,9 +322,9 @@ static int get_user_skb_frags(struct iovec *iv, size_t 
count,
                        if (copy > len)
                                copy = len;
 
-                       virt = kmap_atomic(f->page, KM_USER0);
+                       virt = kmap(f->page);
                        err = memcpy_fromiovec(virt + f->size, iv, copy);
-                       kunmap_atomic(virt, KM_USER0);
+                       kunmap(f->page);
 
                        if (err)
                                return err;


_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/virtualization

Reply via email to