diff options
| -rw-r--r-- | kernel/gsp_sema_service.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 9e3b14c..e6459f3 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -6377,6 +6377,16 @@ static void svc_session_flush(void) */ memset(svc.pin, 0, sizeof(svc.pin)); svc.pin_n = 0; + /* + * Host-injected pins are session-scoped too: the streaming tool + * follows the live client's pid, so at session end its entries are + * stale. Leaving them let the next client resolve through the + * previous client's pages (same VAs, new PAs) - the second-client + * exit hang. The injection queue itself is drained on this thread + * (svc_handle_map_add), so this clear cannot race it. + */ + memset(svc.ipin, 0, sizeof(svc.ipin)); + svc.ipin_n = 0; memset(svc_cnt_der, 0, sizeof(svc_cnt_der)); svc_cnt_der_n = 0; memset(svc_hot, 0, sizeof(svc_hot)); |
