diff options
author | swallace <swallace@FreeBSD.org> | 1996-12-17 19:52:25 +0000 |
---|---|---|
committer | swallace <swallace@FreeBSD.org> | 1996-12-17 19:52:25 +0000 |
commit | b1c7666d3ff2a20b439ed338746001a84a91637c (patch) | |
tree | fb3a68532e62bb1491165337d431cd6f296af263 /sys | |
parent | 8ab072dc79ebe3fa2ccfe38a7ac95db301a6930b (diff) | |
download | FreeBSD-src-b1c7666d3ff2a20b439ed338746001a84a91637c.zip FreeBSD-src-b1c7666d3ff2a20b439ed338746001a84a91637c.tar.gz |
In the IBCS2 semctl system call, the last parameter arg is passed by
value, but in the FreeBSD semctl system call implementation, is passed
by reference.
Submitted by: msagre@cactus.fi.uba.ar <Miguel Angel Sagreras>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/i386/ibcs2/ibcs2_ipc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/i386/ibcs2/ibcs2_ipc.c b/sys/i386/ibcs2/ibcs2_ipc.c index 778b8dc..93b7c22 100644 --- a/sys/i386/ibcs2/ibcs2_ipc.c +++ b/sys/i386/ibcs2/ibcs2_ipc.c @@ -21,6 +21,8 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: $ */ #include <sys/param.h> @@ -66,6 +68,8 @@ #define IBCS2_IPC_RMID 0 #define IBCS2_IPC_SET 1 #define IBCS2_IPC_STAT 2 +#define IBCS2_SETVAL 8 + static void cvt_msqid2imsqid __P((struct msqid_ds *, struct ibcs2_msqid_ds *)); @@ -273,7 +277,18 @@ ibcs2_semsys(p, uap, retval) SCARG(uap, a5) = (int)sp; return semsys(p, (struct semsys_args *)uap, retval); } + case IBCS2_SETVAL: + { + union semun *sp; + caddr_t sg = stackgap_init(); + + sp = stackgap_alloc(&sg, sizeof(*sp)); + sp->val = (int) SCARG(uap, a5); + SCARG(uap, a5) = (int)sp; + return semsys(p, (struct semsys_args *)uap, retval); + } } + return semsys(p, (struct semsys_args *)uap, retval); case 1: /* semget */ @@ -375,6 +390,7 @@ ibcs2_shmsys(p, uap, retval) return shmsys(p, (struct shmsys_args *)uap, retval); } } + return shmsys(p, (struct shmsys_args *)uap, retval); case 2: /* shmdt */ |