[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160903002051.GA2356@ZenIV.linux.org.uk>
Date: Sat, 3 Sep 2016 01:20:52 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: Dmitry Safonov <dsafonov@...tuozzo.com>
Cc: linux-kernel@...r.kernel.org, mingo@...hat.com,
luto@...capital.net, tglx@...utronix.de, hpa@...or.com,
x86@...nel.org, 0x7f454c46@...il.com, oleg@...hat.com,
rostedt@...dmis.org
Subject: Re: [RFC 1/3] x86/vdso: create vdso file, use it for mapping
On Thu, Aug 25, 2016 at 06:21:08PM +0300, Dmitry Safonov wrote:
> + unsigned long n_addr = mmap_region(vdso_file_64, text_start,
> + image->size, VM_READ|VM_EXEC|
> + VM_DONTEXPAND|VM_SOFTDIRTY|
> + VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, 0);
> + if (text_start != n_addr) {
> + pr_err("Failed to mmap vdso file at %lx, mmap_region returned %lx\n",
> + text_start, n_addr);
> + goto old_way;
> + }
> + vma = find_vma(mm, text_start);
> + if (IS_ERR(vma) || vma->vm_start != text_start) {
> + pr_err("Failed to find vdso mapped vma at %lx\n",
> + text_start);
> + goto old_way;
Umm... Since when can find_vma() return ERR_PTR()?
> + d_set_d_op(path.dentry, &vdso_dops);
Nope. Set ->s_d_op to &vdso_dops and be done with that.
> +static struct file_system_type vdso_fs_type = {
> + .name = "vdsofs",
> + .mount = ramfs_mount,
Probably the wrong thing here. Just use a simple wrapper using mount_pseudo()
for all work; see fs/aio.c:aio_mount().
> + ret = register_filesystem(&vdso_fs_type);
Do you really want it user-mountable? If not, no need to register...
Powered by blists - more mailing lists