2010-09-23 09:01:39

by Pavel Emelyanov

[permalink] [raw]
Subject: [PATCH nfsd-next] nfsd: Export get_task_comm for nfsd

The git://linux-nfs.org/~bfields/linux.git nfsd-next branch doesn't
compile when nfsd is a module with the following error:

ERROR: "get_task_comm" [fs/nfsd/nfsd.ko] undefined!

The get_task_comm is used in nfsctl_transaction_read's printk.

Signed-off-by: Pavel Emelyanov <[email protected]>

---

diff --git a/fs/exec.c b/fs/exec.c
index 828dd24..1d22c4b 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -957,6 +957,7 @@ char *get_task_comm(char *buf, struct task_struct *tsk)
task_unlock(tsk);
return buf;
}
+EXPORT_SYMBOL_GPL(get_task_comm);

void set_task_comm(struct task_struct *tsk, char *buf)
{


2010-09-23 14:27:08

by Pavel Emelyanov

[permalink] [raw]
Subject: Re: [PATCH nfsd-next] nfsd: Export get_task_comm for nfsd

> Why doesn't it simply use current->comm as countless other users?

Yep, this is indeed better...

The git://linux-nfs.org/~bfields/linux.git nfsd-next branch doesn't
compile when nfsd is a module with the following error:

ERROR: "get_task_comm" [fs/nfsd/nfsd.ko] undefined!

Replace the get_task_comm call with direct comm access, which is
safe for current.

Signed-off-by: Pavel Emelyanov <[email protected]>

---

diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 83c82ed..b6e192d 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -129,12 +129,10 @@ static ssize_t nfsctl_transaction_read(struct file *file, char __user *buf, size
{
static int warned;
if (file->f_dentry->d_name.name[0] == '.' && !warned) {
- char name[sizeof(current->comm)];
printk(KERN_INFO
"Warning: \"%s\" uses deprecated NFSD interface: %s."
" This will be removed in 2.6.40\n",
- get_task_comm(name, current),
- file->f_dentry->d_name.name);
+ current->comm, file->f_dentry->d_name.name);
warned = 1;
}
if (! file->private_data) {

2010-09-23 14:05:51

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH nfsd-next] nfsd: Export get_task_comm for nfsd

On Thu, Sep 23, 2010 at 01:01:34PM +0400, Pavel Emelyanov wrote:
> The git://linux-nfs.org/~bfields/linux.git nfsd-next branch doesn't
> compile when nfsd is a module with the following error:
>
> ERROR: "get_task_comm" [fs/nfsd/nfsd.ko] undefined!
>
> The get_task_comm is used in nfsctl_transaction_read's printk.

Why doesn't it simply use current->comm as countless other users?
Assuming it doesn't actually want to print comm for a non-current users
which would rather surprise me.

2010-09-23 14:40:39

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH nfsd-next] nfsd: Export get_task_comm for nfsd

On Thu, Sep 23, 2010 at 06:26:58PM +0400, Pavel Emelyanov wrote:
> > Why doesn't it simply use current->comm as countless other users?
>
> Yep, this is indeed better...
>
> The git://linux-nfs.org/~bfields/linux.git nfsd-next branch doesn't
> compile when nfsd is a module with the following error:
>
> ERROR: "get_task_comm" [fs/nfsd/nfsd.ko] undefined!
>
> Replace the get_task_comm call with direct comm access, which is
> safe for current.
>
> Signed-off-by: Pavel Emelyanov <[email protected]>

Applied, thanks.

--b.

>
> ---
>
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index 83c82ed..b6e192d 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -129,12 +129,10 @@ static ssize_t nfsctl_transaction_read(struct file *file, char __user *buf, size
> {
> static int warned;
> if (file->f_dentry->d_name.name[0] == '.' && !warned) {
> - char name[sizeof(current->comm)];
> printk(KERN_INFO
> "Warning: \"%s\" uses deprecated NFSD interface: %s."
> " This will be removed in 2.6.40\n",
> - get_task_comm(name, current),
> - file->f_dentry->d_name.name);
> + current->comm, file->f_dentry->d_name.name);
> warned = 1;
> }
> if (! file->private_data) {