sd-bus: fix error handling of pthread API calls
pthread APIs (unlike the rest of libc) return their errors as positive error codes directly from the functions, rather than using errno. Let's make sure we always handle things that way.
This commit is contained in:
parent
1a37c9756f
commit
50e0d56cf3
|
@ -116,13 +116,12 @@ static int loop_clients(int accept_fd, uid_t bus_uid) {
|
|||
int r;
|
||||
|
||||
r = pthread_attr_init(&attr);
|
||||
if (r < 0) {
|
||||
return log_error_errno(errno, "Cannot initialize pthread attributes: %m");
|
||||
}
|
||||
if (r != 0)
|
||||
return log_error_errno(r, "Cannot initialize pthread attributes: %m");
|
||||
|
||||
r = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "Cannot mark pthread attributes as detached: %m");
|
||||
if (r != 0) {
|
||||
r = log_error_errno(r, "Cannot mark pthread attributes as detached: %m");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
@ -156,8 +155,8 @@ static int loop_clients(int accept_fd, uid_t bus_uid) {
|
|||
c->bus_uid = bus_uid;
|
||||
|
||||
r = pthread_create(&tid, &attr, run_client, c);
|
||||
if (r < 0) {
|
||||
log_error("Cannot spawn thread: %m");
|
||||
if (r != 0) {
|
||||
log_warning_errno(r, "Cannot spawn thread, ignoring: %m");
|
||||
client_context_free(c);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1186,14 +1186,14 @@ int shared_policy_new(SharedPolicy **out) {
|
|||
return log_oom();
|
||||
|
||||
r = pthread_mutex_init(&sp->lock, NULL);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Cannot initialize shared policy mutex: %m");
|
||||
if (r != 0) {
|
||||
r = log_error_errno(r, "Cannot initialize shared policy mutex: %m");
|
||||
goto exit_free;
|
||||
}
|
||||
|
||||
r = pthread_rwlock_init(&sp->rwlock, NULL);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Cannot initialize shared policy rwlock: %m");
|
||||
if (r != 0) {
|
||||
r = log_error_errno(r, "Cannot initialize shared policy rwlock: %m");
|
||||
goto exit_mutex;
|
||||
}
|
||||
|
||||
|
|
|
@ -1433,12 +1433,12 @@ int bus_kernel_pop_memfd(sd_bus *bus, void **address, size_t *mapped, size_t *al
|
|||
if (!bus || !bus->is_kernel)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
assert_se(pthread_mutex_lock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_lock(&bus->memfd_cache_mutex) == 0);
|
||||
|
||||
if (bus->n_memfd_cache <= 0) {
|
||||
int r;
|
||||
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) == 0);
|
||||
|
||||
r = memfd_new(bus->description);
|
||||
if (r < 0)
|
||||
|
@ -1460,7 +1460,7 @@ int bus_kernel_pop_memfd(sd_bus *bus, void **address, size_t *mapped, size_t *al
|
|||
*allocated = c->allocated;
|
||||
fd = c->fd;
|
||||
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) == 0);
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
@ -1484,10 +1484,10 @@ void bus_kernel_push_memfd(sd_bus *bus, int fd, void *address, size_t mapped, si
|
|||
return;
|
||||
}
|
||||
|
||||
assert_se(pthread_mutex_lock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_lock(&bus->memfd_cache_mutex) == 0);
|
||||
|
||||
if (bus->n_memfd_cache >= ELEMENTSOF(bus->memfd_cache)) {
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) == 0);
|
||||
|
||||
close_and_munmap(fd, address, mapped);
|
||||
return;
|
||||
|
@ -1507,7 +1507,7 @@ void bus_kernel_push_memfd(sd_bus *bus, int fd, void *address, size_t mapped, si
|
|||
c->allocated = allocated;
|
||||
}
|
||||
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) >= 0);
|
||||
assert_se(pthread_mutex_unlock(&bus->memfd_cache_mutex) == 0);
|
||||
}
|
||||
|
||||
void bus_kernel_flush_memfd(sd_bus *b) {
|
||||
|
|
|
@ -1123,8 +1123,8 @@ _public_ int sd_event_add_signal(
|
|||
callback = signal_exit_callback;
|
||||
|
||||
r = pthread_sigmask(SIG_SETMASK, NULL, &ss);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
if (r != 0)
|
||||
return -r;
|
||||
|
||||
if (!sigismember(&ss, sig))
|
||||
return -EBUSY;
|
||||
|
|
Loading…
Reference in a new issue