rem: if ((!act) || (!oact)) return EINVAL;  rc = user_memcpy(&kact, act, sizeof(struct sigaction)); if (rc < 0) return rc; rc = user_memcpy(&koact, oact, sizeof(struct sigaction)); if (rc < 0) return rc; rc = sys_sigaction(sig, &kact, &koact); if (rc < 0) return rc; rc = user_memcpy(oact, &koact, sizeof(struct sigaction));
add: if ((userAction != NULL && user_memcpy(&act, userAction, sizeof(struct sigaction)) < B_OK) || (userOldAction != NULL && user_memcpy(&oact, userOldAction, sizeof(struct sigaction)) < B_OK)) return B_BAD_ADDRESS;  rc = sigaction(sig, userAction ? &act : NULL, userOldAction ? &oact : NULL);   if (rc >= 0 && userOldAction != NULL && user_memcpy(userOldAction, &oact, sizeof(struct sigaction)) < B_OK) return B_BAD_ADDRESS;
context: user_sigaction(int sig, const struct sigaction *act, struct sigaction *oact){	struct sigaction kact;	struct sigaction koact;	int rc;		if ((!act) || (!oact))		return EINVAL;		rc = user_memcpy(&kact, act, sizeof(struct sigaction));	if (rc < 0)		return rc;	rc = user_memcpy(&koact, oact, sizeof(struct sigaction));	if (rc < 0)		return rc;	rc = sys_sigaction(sig, &kact, &koact);	if (rc < 0)		return rc;	rc = user_memcpy(oact, &koact, sizeof(struct sigaction));	return rc;}