#include #include #include #include #include "ioexact.h" extern volatile sig_atomic_t sigint; ssize_t read_exact(int fd, void *buf, size_t len, bool mayexit) { ssize_t num = 0, written; while (len > 0 && !sigint) { if ((written = read(fd, buf, len)) < 0) { if (errno == EAGAIN && num > 0) continue; if (mayexit) return -1; else continue; } if (!written) return 0; len -= written; buf += written; num += written; } return num; } ssize_t write_exact(int fd, void *buf, size_t len, bool mayexit) { ssize_t num = 0, written; while (len > 0 && !sigint) { if ((written = write(fd, buf, len)) < 0) { if (errno == EAGAIN && num > 0) continue; if (mayexit) return -1; else continue; } if (!written) return 0; len -= written; buf += written; num += written; } return num; } m method='get'> net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
el'>space:
AgeCommit message (Expand)AuthorFilesLines
mode:
authorScott Mayhew <smayhew@redhat.com>2017-01-05 16:34:51 -0500
committerJ. Bruce Fields <bfields@redhat.com>2017-01-12 15:56:40 -0500
commit546125d1614264d26080817d0c8cddb9b25081fa (patch)
treeee7ffd8b1b320378fa7ffa37a1dc5fd38595a33d /tools
parent78794d1890708cf94e3961261e52dcec2cc34722 (diff)
sunrpc: don't call sleeping functions from the notifier block callbacks
The inet6addr_chain is an atomic notifier chain, so we can't call anything that might sleep (like lock_sock)... instead of closing the socket from svc_age_temp_xprts_now (which is called by the notifier function), just have the rpc service threads do it instead. Cc: stable@vger.kernel.org Fixes: c3d4879e01be "sunrpc: Add a function to close..." Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'tools')