mirror of
https://github.com/versity/scoutfs.git
synced 2026-02-07 03:00:44 +00:00
Account for ipv6 in kernel_get{sock,peer}name compat.
These 2 kernel wrapper functions need to be able to properly handle the ipv6 addrlen, instead of returning -EAFNOSUPPORT(-97). Signed-off-by: Auke Kok <auke.kok@versity.com>
This commit is contained in:
@@ -195,9 +195,11 @@ struct kc_shrinker_wrapper {
|
||||
#include <linux/inet.h>
|
||||
static inline int kc_kernel_getsockname(struct socket *sock, struct sockaddr *addr)
|
||||
{
|
||||
int addrlen = sizeof(struct sockaddr_in);
|
||||
int addrlen = sizeof(struct sockaddr_storage);
|
||||
int ret = kernel_getsockname(sock, addr, &addrlen);
|
||||
if (ret == 0 && addrlen != sizeof(struct sockaddr_in))
|
||||
if (ret == 0 && (!(
|
||||
(addrlen == sizeof(struct sockaddr_in)) ||
|
||||
(addrlen == sizeof(struct sockaddr_in6)))))
|
||||
return -EAFNOSUPPORT;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
@@ -206,9 +208,11 @@ static inline int kc_kernel_getsockname(struct socket *sock, struct sockaddr *ad
|
||||
}
|
||||
static inline int kc_kernel_getpeername(struct socket *sock, struct sockaddr *addr)
|
||||
{
|
||||
int addrlen = sizeof(struct sockaddr_in);
|
||||
int addrlen = sizeof(struct sockaddr_storage);
|
||||
int ret = kernel_getpeername(sock, addr, &addrlen);
|
||||
if (ret == 0 && addrlen != sizeof(struct sockaddr_in))
|
||||
if (ret == 0 && (!(
|
||||
(addrlen == sizeof(struct sockaddr_in)) ||
|
||||
(addrlen == sizeof(struct sockaddr_in6)))))
|
||||
return -EAFNOSUPPORT;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user