From f633d641c21f45e46aa9585fc38389da033c0212 Mon Sep 17 00:00:00 2001 From: "Sarang S. Dalal" Date: Sun, 29 Oct 2017 10:23:31 +0100 Subject: [PATCH 1/3] replace deprecated vfs_read with kernel_read See https://github.com/anbox/anbox/issues/486 and related issue with ashmem and ZFS: https://github.com/zfsonlinux/spl/issues/656 --- kernel/ashmem/ashmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/ashmem/ashmem.c b/kernel/ashmem/ashmem.c index c846db6..4fde1d7 100644 --- a/kernel/ashmem/ashmem.c +++ b/kernel/ashmem/ashmem.c @@ -313,7 +313,7 @@ static ssize_t ashmem_read(struct file *file, char __user *buf, * be destroyed until all references to the file are dropped and * ashmem_release is called. */ - ret = __vfs_read(asma->file, buf, len, pos); + ret = kernel_read(asma->file, buf, len, pos); if (ret >= 0) /** Update backing file pos, since f_ops->read() doesn't */ asma->file->f_pos = *pos; From 0af5a76743717abb1c5ecf0f9baf85085a90af40 Mon Sep 17 00:00:00 2001 From: "Sarang S. Dalal" Date: Tue, 23 Jan 2018 00:18:18 +0100 Subject: [PATCH 2/3] added kernel version check for calling kernel_read vs vfs_read added kernel version check for calling kernel_read vs vfs_read, as suggested here: https://github.com/Asmodee-Box/anbox/commit/55d56994295eae827421a5fffc7ec2370af6015e --- kernel/ashmem/ashmem.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/ashmem/ashmem.c b/kernel/ashmem/ashmem.c index 4fde1d7..dd15960 100644 --- a/kernel/ashmem/ashmem.c +++ b/kernel/ashmem/ashmem.c @@ -313,7 +313,11 @@ static ssize_t ashmem_read(struct file *file, char __user *buf, * be destroyed until all references to the file are dropped and * ashmem_release is called. */ - ret = kernel_read(asma->file, buf, len, pos); + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) + ret = __vfs_read(asma->file, buf, len, pos); + #else + ret = kernel_read(asma->file, buf, len, pos); + #endif if (ret >= 0) /** Update backing file pos, since f_ops->read() doesn't */ asma->file->f_pos = *pos; From ba3ae093ed16b76e2a787ae1fb5824ee8d0a6f7f Mon Sep 17 00:00:00 2001 From: "Sarang S. Dalal" Date: Tue, 23 Jan 2018 00:58:08 +0100 Subject: [PATCH 3/3] add comment to explain kernel_read --- kernel/ashmem/ashmem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/ashmem/ashmem.c b/kernel/ashmem/ashmem.c index dd15960..1831493 100644 --- a/kernel/ashmem/ashmem.c +++ b/kernel/ashmem/ashmem.c @@ -312,6 +312,8 @@ static ssize_t ashmem_read(struct file *file, char __user *buf, * once asma->file is set it will never be changed, and will not * be destroyed until all references to the file are dropped and * ashmem_release is called. + * + * kernel_read supersedes vfs_read from kernel version 3.9 */ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) ret = __vfs_read(asma->file, buf, len, pos);