- if (chgprot((caddr_t)ipc.ip_addr, RW) &&
- chgprot((caddr_t)ipc.ip_addr+(sizeof(int)-1), RW))
- i = suiword((caddr_t)ipc.ip_addr, ipc.ip_data);
- (void) chgprot((caddr_t)ipc.ip_addr, RO);
- (void) chgprot((caddr_t)ipc.ip_addr+(sizeof(int)-1), RO);
+ if ((i = suiword((caddr_t)ipc.ip_addr, ipc.ip_data)) < 0) {
+ if (!chgprot((caddr_t)ipc.ip_addr, RW) &&
+ !chgprot((caddr_t)ipc.ip_addr+(sizeof(int)-1), RW))
+ i = suiword((caddr_t)ipc.ip_addr, ipc.ip_data);
+ (void) chgprot((caddr_t)ipc.ip_addr, RO);
+ (void) chgprot((caddr_t)ipc.ip_addr+(sizeof(int)-1), RO);
+ }