public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Luca Barbieri <ldb@ldb.ods.org>
To: trond.myklebust@fys.uio.no
Cc: Linus Torvalds <torvalds@transmeta.com>,
	Linux FSdevel <linux-fsdevel@vger.kernel.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Initial support for struct vfs_cred   [0/1]
Date: 01 Sep 2002 16:20:22 +0200	[thread overview]
Message-ID: <1030890022.2145.52.camel@ldb> (raw)
In-Reply-To: <15730.8121.554630.859558@charged.uio.no>

[-- Attachment #1: Type: text/plain, Size: 1724 bytes --]

On Sun, 2002-09-01 at 16:10, Trond Myklebust wrote:
> >>>>> " " == Trond Myklebust <trond.myklebust@fys.uio.no> writes:
> 
> >>>>> " " == Luca Barbieri <ldb@ldb.ods.org> writes:
>     >> For example, rather than this;
>      > <snip>
> 
>     >> you can just do this:
>     >> - uid_t saved_fsuid = current->fsuid;
>     >> + uid_t saved_fsuid = current->fscred.uid;
>     >> kernel_cap_t saved_cap =
>     current-> cap_effective;
>  
>      > But I don't want to have to do that at all. Why should I change
> 
> Just to follow up on why the above 'optimization' is just plain wrong.
> 
> You are forgetting that the fscred might simultaneously be referenced
> by an open struct file. Are you saying that this file should suddenly
> see its credential change?
No, it cannot be referenced by an open struct file because you copy the
structure, not pointers to it.

> The alternative without copy on write is to make a full copy of the
> fscred every time we open a file or schedule some form of asynchronous
> I/O, and hence need to cache the current VFS credentials.
Yes.
Note however that the structure is like this:
struct vfs_cred
{
	uid_t uid, gid;
	vfs_cred_groups* groups;
}

vfs_cred_copy(struct vfs_cred* dest, struct vfs_cred* src)
{
	dest->uid = src->uid;
	dest->gid = src->gid;
	dest->groups = src->groups;
	atomic_inc(&src->groups->count);
}

Of course if you don't need groups you can avoid copying them.
This is efficient if you usually either check the uid and gid or copy
only them (omitting groups).
If instead copying the whole structure is more frequent than the
operations described above, then use reference counting and
copy-on-write for the whole structure, but I don't think that this is
the case.


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2002-09-01 14:16 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-31 16:32 [PATCH] Initial support for struct vfs_cred [0/1] Trond Myklebust
2002-08-31 18:57 ` Luca Barbieri
2002-08-31 19:36   ` Linus Torvalds
2002-08-31 19:38     ` Luca Barbieri
2002-08-31 22:30       ` Trond Myklebust
2002-08-31 23:13         ` Luca Barbieri
2002-09-01 13:03           ` Trond Myklebust
2002-09-01 14:10             ` Trond Myklebust
2002-09-01 14:20               ` Luca Barbieri [this message]
2002-09-01 16:40                 ` Trond Myklebust
2002-09-01 18:54                   ` Luca Barbieri
2002-09-01 19:40                     ` Trond Myklebust
2002-09-01 21:34                       ` Luca Barbieri
2002-09-01 21:56                         ` Trond Myklebust
2002-09-01 22:50                           ` Luca Barbieri
     [not found]                             ` <20020903034607.GF29452@ravel.coda.cs.cmu.edu>
2002-09-08 22:04                               ` Luca Barbieri
2002-09-09  6:22                                 ` Jan Harkes
2002-09-09 11:17                                   ` Luca Barbieri
2002-09-01 14:33             ` Luca Barbieri
2002-09-01 16:38               ` Trond Myklebust
2002-09-01 18:42                 ` Luca Barbieri
2002-09-01 19:25                   ` Trond Myklebust
2002-09-01 21:36                     ` Luca Barbieri
2002-09-01 15:15           ` Daniel Phillips
2002-09-01 15:35             ` Luca Barbieri
2002-08-31 19:51 ` Luca Barbieri

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=1030890022.2145.52.camel@ldb \
    --to=ldb@ldb.ods.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    --cc=trond.myklebust@fys.uio.no \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox