diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2010-12-31 13:59:31 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-01 16:57:55 -0500 |
commit | 25860c3bd5bd1db236d4fd5826d76127d677dc28 (patch) | |
tree | 68ad705820b95452a49574e056c89d61cd1b69e5 /net/tipc | |
parent | e83504f72456809cdbdbc91700d3ba6370c9da1c (diff) |
tipc: recode getsockopt error handling for better readability
The existing code for the copy to user and error handling at the
end of getsockopt isn't easy to follow, due to the excessive use
of if/else. By simply using return where appropriate, it can be
made smaller and easier to follow at the same time.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/socket.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index f972c0b4a719..1a2eb23c6223 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -1755,20 +1755,16 @@ static int getsockopt(struct socket *sock, | |||
1755 | 1755 | ||
1756 | release_sock(sk); | 1756 | release_sock(sk); |
1757 | 1757 | ||
1758 | if (res) { | 1758 | if (res) |
1759 | /* "get" failed */ | 1759 | return res; /* "get" failed */ |
1760 | } | ||
1761 | else if (len < sizeof(value)) { | ||
1762 | res = -EINVAL; | ||
1763 | } | ||
1764 | else if (copy_to_user(ov, &value, sizeof(value))) { | ||
1765 | res = -EFAULT; | ||
1766 | } | ||
1767 | else { | ||
1768 | res = put_user(sizeof(value), ol); | ||
1769 | } | ||
1770 | 1760 | ||
1771 | return res; | 1761 | if (len < sizeof(value)) |
1762 | return -EINVAL; | ||
1763 | |||
1764 | if (copy_to_user(ov, &value, sizeof(value))) | ||
1765 | return -EFAULT; | ||
1766 | |||
1767 | return put_user(sizeof(value), ol); | ||
1772 | } | 1768 | } |
1773 | 1769 | ||
1774 | /** | 1770 | /** |