Index: compat/linux/linux_ipc.c =================================================================== RCS file: /host/cvs/usr/cvs/src/sys/compat/linux/linux_ipc.c,v retrieving revision 1.48 diff -u -r1.48 linux_ipc.c --- compat/linux/linux_ipc.c 8 Jul 2006 19:51:37 -0000 1.48 +++ compat/linux/linux_ipc.c 10 Oct 2006 16:50:48 -0000 @@ -465,7 +465,7 @@ } */ bsd_args; bsd_args.semid = args->semid; - bsd_args.sops = (struct sembuf *)PTRIN(args->tsops); + bsd_args.sops = PTRIN(args->tsops); bsd_args.nsops = args->nsops; return semop(td, &bsd_args); } @@ -520,7 +520,7 @@ case LINUX_IPC_SET: cmd = IPC_SET; error = linux_semid_pullup(args->cmd & LINUX_IPC_64, - &linux_semid, (caddr_t)PTRIN(args->arg.buf)); + &linux_semid, PTRIN(args->arg.buf)); if (error) return (error); linux_to_bsd_semid_ds(&linux_semid, &semid); @@ -540,7 +540,7 @@ return (error); bsd_to_linux_semid_ds(&semid, &linux_semid); error = linux_semid_pushdown(args->cmd & LINUX_IPC_64, - &linux_semid, (caddr_t)PTRIN(args->arg.buf)); + &linux_semid, PTRIN(args->arg.buf)); if (error == 0) td->td_retval[0] = (cmd == SEM_STAT) ? rval : 0; return (error); @@ -628,13 +628,14 @@ struct l_msqid_ds linux_msqid; struct msqid_ds bsd_msqid; - error = linux_msqid_pullup(args->cmd & LINUX_IPC_64, - &linux_msqid, (caddr_t)PTRIN(args->buf)); - if (error != 0) - return (error); bsd_cmd = args->cmd & ~LINUX_IPC_64; - if (bsd_cmd == LINUX_IPC_SET) + if (bsd_cmd == LINUX_IPC_SET) { + error = linux_msqid_pullup(args->cmd & LINUX_IPC_64, + &linux_msqid, PTRIN(args->buf)); + if (error) + return (error); linux_to_bsd_msqid_ds(&linux_msqid, &bsd_msqid); + } error = kern_msgctl(td, args->msqid, bsd_cmd, &bsd_msqid); if (error != 0) @@ -644,7 +645,7 @@ if (bsd_cmd == LINUX_IPC_STAT) { bsd_to_linux_msqid_ds(&bsd_msqid, &linux_msqid); return (linux_msqid_pushdown(args->cmd & LINUX_IPC_64, - &linux_msqid, (caddr_t)PTRIN(args->buf))); + &linux_msqid, PTRIN(args->buf))); } return (0); @@ -710,7 +711,6 @@ struct l_shminfo linux_shminfo; struct l_shm_info linux_shm_info; struct shmid_ds bsd_shmid; - size_t bufsz; int error; switch (args->cmd & ~LINUX_IPC_64) { @@ -720,14 +720,14 @@ /* Perform shmctl wanting removed segments lookup */ error = kern_shmctl(td, args->shmid, IPC_INFO, - (void *)&bsd_shminfo, &bufsz); + (void *)&bsd_shminfo, NULL); if (error) return error; bsd_to_linux_shminfo(&bsd_shminfo, &linux_shminfo); return (linux_shminfo_pushdown(args->cmd & LINUX_IPC_64, - &linux_shminfo, (caddr_t)PTRIN(args->buf))); + &linux_shminfo, PTRIN(args->buf))); } case LINUX_SHM_INFO: { @@ -735,43 +735,43 @@ /* Perform shmctl wanting removed segments lookup */ error = kern_shmctl(td, args->shmid, SHM_INFO, - (void *)&bsd_shm_info, &bufsz); + (void *)&bsd_shm_info, NULL); if (error) return error; bsd_to_linux_shm_info(&bsd_shm_info, &linux_shm_info); - return copyout(&linux_shm_info, (caddr_t)PTRIN(args->buf), + return copyout(&linux_shm_info, PTRIN(args->buf), sizeof(struct l_shm_info)); } case LINUX_IPC_STAT: /* Perform shmctl wanting removed segments lookup */ error = kern_shmctl(td, args->shmid, IPC_STAT, - (void *)&bsd_shmid, &bufsz); + (void *)&bsd_shmid, NULL); if (error) return error; bsd_to_linux_shmid_ds(&bsd_shmid, &linux_shmid); return (linux_shmid_pushdown(args->cmd & LINUX_IPC_64, - &linux_shmid, (caddr_t)PTRIN(args->buf))); + &linux_shmid, PTRIN(args->buf))); case LINUX_SHM_STAT: /* Perform shmctl wanting removed segments lookup */ error = kern_shmctl(td, args->shmid, IPC_STAT, - (void *)&bsd_shmid, &bufsz); + (void *)&bsd_shmid, NULL); if (error) return error; bsd_to_linux_shmid_ds(&bsd_shmid, &linux_shmid); return (linux_shmid_pushdown(args->cmd & LINUX_IPC_64, - &linux_shmid, (caddr_t)PTRIN(args->buf))); + &linux_shmid, PTRIN(args->buf))); case LINUX_IPC_SET: error = linux_shmid_pullup(args->cmd & LINUX_IPC_64, - &linux_shmid, (caddr_t)PTRIN(args->buf)); + &linux_shmid, PTRIN(args->buf)); if (error) return error; @@ -779,7 +779,7 @@ /* Perform shmctl wanting removed segments lookup */ return kern_shmctl(td, args->shmid, IPC_SET, - (void *)&bsd_shmid, &bufsz); + (void *)&bsd_shmid, NULL); case LINUX_IPC_RMID: { void *buf; @@ -788,13 +788,13 @@ buf = NULL; else { error = linux_shmid_pullup(args->cmd & LINUX_IPC_64, - &linux_shmid, (caddr_t)PTRIN(args->buf)); + &linux_shmid, PTRIN(args->buf)); if (error) return error; linux_to_bsd_shmid_ds(&linux_shmid, &bsd_shmid); buf = (void *)&bsd_shmid; } - return kern_shmctl(td, args->shmid, IPC_RMID, buf, &bufsz); + return kern_shmctl(td, args->shmid, IPC_RMID, buf, NULL); } case LINUX_SHM_LOCK: