From: Tim Hockin <thockin@sun.com>
To: Andrew Morton <akpm@osdl.org>
Cc: arjanv@redhat.com, thomas.schlichter@web.de, thoffman@arnor.net,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: 2.6.2-rc2-mm2
Date: Fri, 30 Jan 2004 14:31:06 -0800 [thread overview]
Message-ID: <20040130223105.GC9155@sun.com> (raw)
In-Reply-To: <20040130140024.4b409335.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 602 bytes --]
On Fri, Jan 30, 2004 at 02:00:24PM -0800, Andrew Morton wrote:
> Tim Hockin <thockin@sun.com> wrote:
> >
> > In fact, here is a rough cut (would need a coupel exported syms, too). The
> > lack of any way to handle errors bothers me. printk and fail? yeesh.
>
> Seems to be a good way to go. It doesn't seem likely that any other parts
> of the kernel will want to be setting the group ownership in this way.
How's the attached patch? Do you need me to BK it, or is the patch enough?
--
Tim Hockin
Sun Microsystems, Linux Software Engineering
thockin@sun.com
All opinions are my own, not Sun's
[-- Attachment #2: ngroups-nfsd+exports.diff --]
[-- Type: text/plain, Size: 1777 bytes --]
===== kernel/sys.c 1.70 vs edited =====
--- 1.70/kernel/sys.c Thu Jan 29 13:41:05 2004
+++ edited/kernel/sys.c Fri Jan 30 14:27:09 2004
@@ -1132,6 +1132,8 @@
return NULL;
}
+EXPORT_SYMBOL(groups_alloc);
+
void groups_free(struct group_info *group_info)
{
if (group_info->ngroups > NGROUPS_SMALL) {
@@ -1142,6 +1144,8 @@
kfree(group_info);
}
+EXPORT_SYMBOL(groups_free);
+
/* export the group_info to a user-space array */
static int groups_to_user(gid_t __user *grouplist,
struct group_info *group_info)
@@ -1251,6 +1255,8 @@
return 0;
}
+
+EXPORT_SYMBOL(set_current_groups);
asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist)
{
===== fs/nfsd/auth.c 1.3 vs edited =====
--- 1.3/fs/nfsd/auth.c Thu Jan 29 13:40:50 2004
+++ edited/fs/nfsd/auth.c Fri Jan 30 14:28:20 2004
@@ -10,15 +10,14 @@
#include <linux/sunrpc/svcauth.h>
#include <linux/nfsd/nfsd.h>
-extern asmlinkage long sys_setgroups(int gidsetsize, gid_t *grouplist);
-
#define CAP_NFSD_MASK (CAP_FS_MASK|CAP_TO_MASK(CAP_SYS_RESOURCE))
void
nfsd_setuser(struct svc_rqst *rqstp, struct svc_export *exp)
{
struct svc_cred *cred = &rqstp->rq_cred;
- int i;
+ int i, j;
gid_t groups[SVC_CRED_NGROUPS];
+ struct group_info *group_info;
if (exp->ex_flags & NFSEXP_ALLSQUASH) {
cred->cr_uid = exp->ex_anon_uid;
@@ -48,7 +47,13 @@
break;
groups[i] = group;
}
- sys_setgroups(i, groups);
+ group_info = groups_alloc(i);
+ /* should be error checking, but we can't return ENOMEM! */
+ for (j = 0; j < i; j++)
+ GROUP_AT(group_info, j) = groups[j];
+ if (set_current_groups(group_info))
+ put_group_info(group_info);
+ /* should be error handling but we return void */
if ((cred->cr_uid)) {
cap_t(current->cap_effective) &= ~CAP_NFSD_MASK;
next prev parent reply other threads:[~2004-01-30 22:31 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-30 9:41 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 9:41 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 10:52 ` 2.6.2-rc2-mm2 Helge Hafting
2004-01-30 10:52 ` 2.6.2-rc2-mm2 Helge Hafting
2004-01-30 11:14 ` 2.6.2-rc2-mm2 Zephaniah E. Hull
2004-01-30 16:25 ` 2.6.2-rc2-mm2 Gene Heskett
2004-01-30 16:25 ` 2.6.2-rc2-mm2 Gene Heskett
2004-01-30 17:25 ` 2.6.2-rc2-mm2 Gene Heskett
2004-01-30 17:25 ` 2.6.2-rc2-mm2 Gene Heskett
2004-01-30 18:58 ` 2.6.2-rc2-mm2 Torrey Hoffman
2004-01-30 18:58 ` 2.6.2-rc2-mm2 Torrey Hoffman
2004-01-30 19:07 ` 2.6.2-rc2-mm2 Thomas Schlichter
2004-01-30 19:23 ` 2.6.2-rc2-mm2 Arjan van de Ven
2004-01-30 19:47 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 19:47 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 19:55 ` 2.6.2-rc2-mm2 Arjan van de Ven
2004-01-30 20:17 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 20:17 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 20:33 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 20:33 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 21:12 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 21:12 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 22:00 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 22:00 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 22:31 ` Tim Hockin [this message]
2004-01-30 23:08 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 23:08 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 23:21 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 23:21 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 23:31 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 23:31 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 23:43 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 23:43 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 21:16 ` 2.6.2-rc2-mm2 John Stoffel
2004-01-30 21:16 ` 2.6.2-rc2-mm2 John Stoffel
2004-01-30 21:52 ` 2.6.2-rc2-mm2 Tim Hockin
2004-01-30 21:52 ` 2.6.2-rc2-mm2 Tim Hockin
2004-02-01 10:03 ` 2.6.2-rc2-mm2 Michael Neuffer
2004-02-06 23:17 ` of 2.6.2-rc2-mm2 and r8169 Francois Romieu
[not found] ` <20040207115054.GC5704@neuffer.info>
[not found] ` <20040207132124.A7344@electric-eye.fr.zoreil.com>
[not found] ` <20040208064859.GA29384@neuffer.info>
2004-02-09 23:57 ` [patch] [rft] " Francois Romieu
[not found] <1jDrO-4xh-13@gated-at.bofh.it>
2004-01-30 11:10 ` 2.6.2-rc2-mm2 Ronny V. Vindenes
2004-01-30 17:27 ` 2.6.2-rc2-mm2 Andrew Morton
2004-01-30 18:06 ` 2.6.2-rc2-mm2 Ronny V. Vindenes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040130223105.GC9155@sun.com \
--to=thockin@sun.com \
--cc=akpm@osdl.org \
--cc=arjanv@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=thoffman@arnor.net \
--cc=thomas.schlichter@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.