diff options
Diffstat (limited to 'src/responder/nss')
-rw-r--r-- | src/responder/nss/nsssrv_mmap_cache.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/responder/nss/nsssrv_mmap_cache.c b/src/responder/nss/nsssrv_mmap_cache.c index 7a7a498b..e60d0619 100644 --- a/src/responder/nss/nsssrv_mmap_cache.c +++ b/src/responder/nss/nsssrv_mmap_cache.c @@ -512,16 +512,16 @@ static errno_t sss_mc_set_recycled(int fd) /* What do we do now ? */ return errno; } - pos = 0; - while (pos < sizeof(h.status)) { - ret = write(fd, ((uint8_t *)&w) + pos, sizeof(h.status) - pos); - if (ret == -1) { - if (errno != EINTR) { - return errno; - } - continue; - } - pos += ret; + + errno = 0; + ret = sss_atomic_write_s(fd, (uint8_t *)&w, sizeof(h.status)); + if (ret == -1) { + return errno; + } + + if (ret != sizeof(h.status)) { + /* Write error */ + return EIO; } return EOK; |