summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2008-05-19 22:29:06 +0200
committerDavid S. Miller <davem@davemloft.net>2008-05-19 22:29:06 +0200
commitfc5ad582709ce9c7b9ab7b70c1e5b5e2cfc384db (patch)
tree361068dac2167badddd86ca5f8001c583a6a7fa1 /net
parenttipc: Add support for customized subscription endianness (diff)
downloadlinux-fc5ad582709ce9c7b9ab7b70c1e5b5e2cfc384db.tar.xz
linux-fc5ad582709ce9c7b9ab7b70c1e5b5e2cfc384db.zip
tipc: Fix bug in topology server byte swapping routine
This patch fixes TIPC's topology server so that it does byte swapping correctly when endianness conversion is required. (Note: This bug only impacted an application if it issues a subscription request to a topology server on another node, rather than the server on it's own node; since the topology server is normally not accessible by off-node applications, most TIPC applications were not impacted by the bug.) Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/tipc/subscr.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
index a62e5d30638c..dde23f1e7542 100644
--- a/net/tipc/subscr.c
+++ b/net/tipc/subscr.c
@@ -86,9 +86,7 @@ static struct top_srv topsrv = { 0 };
static u32 htohl(u32 in, int swap)
{
- char *c = (char *)&in;
-
- return swap ? ((c[3] << 3) + (c[2] << 2) + (c[1] << 1) + c[0]) : in;
+ return swap ? (u32)___constant_swab32(in) : in;
}
/**