diff options
author | Andrey Vagin <avagin@openvz.org> | 2011-02-21 02:40:47 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-28 12:18:12 -0800 |
commit | b44d211e166b4b0dae8ce379f9d2e3ac164b5b60 (patch) | |
tree | 1af9b2e472f35813e0fb99d183a6610a90bf7195 /lib | |
parent | dad3d44dcb054e9d0514fbf65ee4a2d88cf1698f (diff) |
netlink: handle errors from netlink_dump()
netlink_dump() may failed, but nobody handle its error.
It generates output data, when a previous portion has been returned to
user space. This mechanism works when all data isn't go in skb. If we
enter in netlink_recvmsg() and skb is absent in the recv queue, the
netlink_dump() will not been executed. So if netlink_dump() is failed
one time, the new data never appear and the reader will sleep forever.
netlink_dump() is called from two places:
1. from netlink_sendmsg->...->netlink_dump_start().
In this place we can report error directly and it will be returned
by sendmsg().
2. from netlink_recvmsg
There we can't report error directly, because we have a portion of
valid output data and call netlink_dump() for prepare the next portion.
If netlink_dump() is failed, the socket will be mark as error and the
next recvmsg will be failed.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions