Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jan 2020 22:36:54 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r357183 - head/sys/kern
Message-ID:  <202001272236.00RMasEh098026@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Mon Jan 27 22:36:54 2020
New Revision: 357183
URL: https://svnweb.freebsd.org/changeset/base/357183

Log:
  Make mqueue objects work across a fork again.
  
  In r110908 (2003) alfred added DFLAG_PASSABLE to tag those types of FD
  that can be passed via unix pipes, but mqueuefs didn't exist
  yet. Later, in r152825 (2005) davidxu neglected to include
  DFLAG_PASSABLE since people don't normally pass these things via unix
  sockets (it's a FreeBSD implementation detail that it's a file
  descriptor, nobody noticed). Then r223866 (2011) by jonathan used the
  new flag in fdcopy, which fork uses. Due to that, mqueuefs actually
  broke mqueue objects being propagated by fork. No mention of mqueuefs
  was made in r223866, so I think it was an unintended consequence.
  
  Fix this by tagging mqueuefs as passable as well. They were prior to
  alfred's change (and it's clear there's no intent in his change to
  change this behavior), and POSIX requires this to be the case as well.
  
  PR: 243103
  Reviewed by: kib@, jiles@
  Differential Revision: https://reviews.freebsd.org/D23038

Modified:
  head/sys/kern/uipc_mqueue.c

Modified: head/sys/kern/uipc_mqueue.c
==============================================================================
--- head/sys/kern/uipc_mqueue.c	Mon Jan 27 22:20:02 2020	(r357182)
+++ head/sys/kern/uipc_mqueue.c	Mon Jan 27 22:36:54 2020	(r357183)
@@ -2669,6 +2669,7 @@ static struct fileops mqueueops = {
 	.fo_chown		= mqf_chown,
 	.fo_sendfile		= invfo_sendfile,
 	.fo_fill_kinfo		= mqf_fill_kinfo,
+	.fo_flags		= DFLAG_PASSABLE,
 };
 
 static struct vop_vector mqfs_vnodeops = {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202001272236.00RMasEh098026>