mirror of https://gitee.com/openkylin/linux.git
cifs: fix srcip_matches() for ipv6
srcip_matches() previously had code like this: srcip_matches(..., struct sockaddr *rhs) { /* ... */ struct sockaddr_in6 *vaddr6 = (struct sockaddr_in6 *) &rhs; return ipv6_addr_equal(..., &vaddr6->sin6_addr); } which interpreted the values on the stack after the 'rhs' pointer as an ipv6 address. The correct thing to do is to use 'rhs', not '&rhs'. Signed-off-by: Nickolai Zeldovich <nickolai@csail.mit.edu> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
9a9284153d
commit
e3e2775ced
|
@ -1917,7 +1917,7 @@ srcip_matches(struct sockaddr *srcaddr, struct sockaddr *rhs)
|
|||
}
|
||||
case AF_INET6: {
|
||||
struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *)srcaddr;
|
||||
struct sockaddr_in6 *vaddr6 = (struct sockaddr_in6 *)&rhs;
|
||||
struct sockaddr_in6 *vaddr6 = (struct sockaddr_in6 *)rhs;
|
||||
return ipv6_addr_equal(&saddr6->sin6_addr, &vaddr6->sin6_addr);
|
||||
}
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue