svn commit: r232183 - head/sys/kern
Jilles Tjoelker
jilles at FreeBSD.org
Sun Feb 26 15:14:29 UTC 2012
Author: jilles
Date: Sun Feb 26 15:14:29 2012
New Revision: 232183
URL: http://svn.freebsd.org/changeset/base/232183
Log:
Fix fchmod() and fchown() on fifos.
The new fifo implementation in r232055 broke fchmod() and fchown() on fifos.
Postfix needs this.
Submitted by: gianni
Reported by: dougb
Modified:
head/sys/kern/sys_pipe.c
Modified: head/sys/kern/sys_pipe.c
==============================================================================
--- head/sys/kern/sys_pipe.c Sun Feb 26 14:27:34 2012 (r232182)
+++ head/sys/kern/sys_pipe.c Sun Feb 26 15:14:29 2012 (r232183)
@@ -152,6 +152,8 @@ static fo_poll_t pipe_poll;
static fo_kqfilter_t pipe_kqfilter;
static fo_stat_t pipe_stat;
static fo_close_t pipe_close;
+static fo_chmod_t pipe_chmod;
+static fo_chown_t pipe_chown;
struct fileops pipeops = {
.fo_read = pipe_read,
@@ -162,8 +164,8 @@ struct fileops pipeops = {
.fo_kqfilter = pipe_kqfilter,
.fo_stat = pipe_stat,
.fo_close = pipe_close,
- .fo_chmod = invfo_chmod,
- .fo_chown = invfo_chown,
+ .fo_chmod = pipe_chmod,
+ .fo_chown = pipe_chown,
.fo_flags = DFLAG_PASSABLE
};
@@ -1548,6 +1550,43 @@ pipe_close(fp, td)
return (0);
}
+static int
+pipe_chmod(fp, mode, active_cred, td)
+ struct file *fp;
+ mode_t mode;
+ struct ucred *active_cred;
+ struct thread *td;
+{
+ struct pipe *cpipe;
+ int error;
+
+ cpipe = fp->f_data;
+ if (cpipe->pipe_state & PIPE_NAMED)
+ error = vn_chmod(fp, mode, active_cred, td);
+ else
+ error = invfo_chmod(fp, mode, active_cred, td);
+ return (error);
+}
+
+static int
+pipe_chown(fp, uid, gid, active_cred, td)
+ struct file *fp;
+ uid_t uid;
+ gid_t gid;
+ struct ucred *active_cred;
+ struct thread *td;
+{
+ struct pipe *cpipe;
+ int error;
+
+ cpipe = fp->f_data;
+ if (cpipe->pipe_state & PIPE_NAMED)
+ error = vn_chown(fp, uid, gid, active_cred, td);
+ else
+ error = invfo_chown(fp, uid, gid, active_cred, td);
+ return (error);
+}
+
static void
pipe_free_kmem(cpipe)
struct pipe *cpipe;
More information about the svn-src-head
mailing list