From da2757cbc5b4e67753f56890f45f5f687cc298ae Mon Sep 17 00:00:00 2001 From: truckman Date: Thu, 3 Oct 2002 02:13:00 +0000 Subject: In an SMP environment post-Giant it is no longer safe to blindly dereference the struct sigio pointer without any locking. Change fgetown() to take a reference to the pointer instead of a copy of the pointer and call SIGIO_LOCK() before copying the pointer and dereferencing it. Reviewed by: rwatson --- sys/kern/sys_socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/kern/sys_socket.c') diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index b4a9442..46e8384 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -131,14 +131,14 @@ soo_ioctl(fp, cmd, data, active_cred, td) return (fsetown(*(int *)data, &so->so_sigio)); case FIOGETOWN: - *(int *)data = fgetown(so->so_sigio); + *(int *)data = fgetown(&so->so_sigio); return (0); case SIOCSPGRP: return (fsetown(-(*(int *)data), &so->so_sigio)); case SIOCGPGRP: - *(int *)data = -fgetown(so->so_sigio); + *(int *)data = -fgetown(&so->so_sigio); return (0); case SIOCATMARK: -- cgit v1.1