1.1 --- a/libfsserver/lib/pipes/pipe_pager.cc Sun Mar 26 01:36:53 2023 +0100
1.2 +++ b/libfsserver/lib/pipes/pipe_pager.cc Sun Mar 26 01:52:16 2023 +0100
1.3 @@ -62,7 +62,7 @@
1.4
1.5 _paging->notify_others(_writing ? PipePaging::WRITER : PipePaging::READER,
1.6 NOTIFY_PEER_CLOSED, NOTIFY_VALUES_NULL);
1.7 - unsubscribe(_notifier);
1.8 + unsubscribe();
1.9
1.10 /* Deallocate the paging coordinator if no other endpoints are active. */
1.11
1.12 @@ -183,22 +183,27 @@
1.13 long PipePager::subscribe(l4_cap_idx_t notifier, notify_flags_t flags)
1.14 {
1.15 /* A single notifier is recorded so that it may be unsubscribed when the
1.16 - file is closed. */
1.17 + endpoint is closed. */
1.18
1.19 - if ((notifier != _notifier) && l4_is_valid_cap(_notifier))
1.20 - unsubscribe(_notifier);
1.21 + unsubscribe();
1.22
1.23 _notifier = notifier;
1.24 -
1.25 return _paging->subscribe(_writing ? PipePaging::WRITER : PipePaging::READER,
1.26 - notifier, flags);
1.27 + _notifier, flags);
1.28 }
1.29
1.30 /* Unsubscribe from notifications. */
1.31
1.32 -long PipePager::unsubscribe(l4_cap_idx_t notifier)
1.33 +long PipePager::unsubscribe()
1.34 {
1.35 - return _paging->unsubscribe(notifier);
1.36 + if (l4_is_valid_cap(_notifier))
1.37 + {
1.38 + long err = _paging->unsubscribe(_notifier);
1.39 + _notifier = L4_INVALID_CAP;
1.40 + return err;
1.41 + }
1.42 + else
1.43 + return L4_EOK;
1.44 }
1.45
1.46 // vim: tabstop=4 expandtab shiftwidth=4