RS: synchronize priv from kernel after swap

. make sure the priv id etc is maintained so
	  future privctl talk about the right thing
	. solves broken IPC after update

Change-Id: I17ed0212c22d634e6db1e80f8dcb2fb8bffe82c6
This commit is contained in:
Ben Gras 2015-01-16 14:24:24 +01:00 committed by David van Moolenbroek
parent 2867e60add
commit 8f4f859b35

View file

@ -266,6 +266,7 @@ int sys_upd_flags;
/* Swap slots here as well. */
pid = src_rp->r_pid;
endpoint = src_rpub->endpoint;
swap_slot(&src_rp, &dst_rp);
/* Reassign pids and endpoints. */
@ -276,6 +277,12 @@ int sys_upd_flags;
dst_rp->r_pub->endpoint = endpoint;
rproc_ptr[_ENDPOINT_P(dst_rp->r_pub->endpoint)] = dst_rp;
/* Update in-RS priv structs */
if ((r = sys_getpriv(&src_rp->r_priv, src_rp->r_pub->endpoint)) != OK)
panic("RS: update: could not update RS copies of priv of src: %d\n", r);
if ((r = sys_getpriv(&dst_rp->r_priv, dst_rp->r_pub->endpoint)) != OK)
panic("RS: update: could not update RS copies of priv of dst: %d\n", r);
/* Adjust input pointers. */
*src_rpp = src_rp;
*dst_rpp = dst_rp;