cifs: fix srcip_matches() for ipv6
authorNickolai Zeldovich <nickolai@csail.mit.edu>
Thu, 17 Jan 2013 02:36:17 +0000 (21:36 -0500)
committerSteve French <sfrench@us.ibm.com>
Mon, 21 Jan 2013 07:37:26 +0000 (01:37 -0600)
commite3e2775cedc9d6294b7bc7cbe9f59c62f9472871
tree44ae751b06310accbe7db464133dcd4f7b9f89fb
parent9a9284153d965a57edc7162a8e57c14c97f3a935
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>
fs/cifs/connect.c