diff --git a/module/sock/posix/posix.c b/module/sock/posix/posix.c index 411d7a65d..ab9efd712 100644 --- a/module/sock/posix/posix.c +++ b/module/sock/posix/posix.c @@ -657,7 +657,9 @@ _sock_check_zcopy(struct spdk_sock *sock) } cm = CMSG_FIRSTHDR(&msgh); - if (!cm || cm->cmsg_level != SOL_IP || cm->cmsg_type != IP_RECVERR) { + if (!(cm && + ((cm->cmsg_level == SOL_IP && cm->cmsg_type == IP_RECVERR) || + (cm->cmsg_level == SOL_IPV6 && cm->cmsg_type == IPV6_RECVERR)))) { SPDK_WARNLOG("Unexpected cmsg level or type!\n"); return 0; } diff --git a/module/sock/uring/uring.c b/module/sock/uring/uring.c index 59db9ef1b..80ac12db3 100644 --- a/module/sock/uring/uring.c +++ b/module/sock/uring/uring.c @@ -842,7 +842,8 @@ _sock_check_zcopy(struct spdk_sock *_sock, int status) } cm = CMSG_FIRSTHDR(&sock->recv_task.msg); - if (cm->cmsg_level != SOL_IP || cm->cmsg_type != IP_RECVERR) { + if (!((cm->cmsg_level == SOL_IP && cm->cmsg_type == IP_RECVERR) || + (cm->cmsg_level == SOL_IPV6 && cm->cmsg_type == IPV6_RECVERR))) { SPDK_WARNLOG("Unexpected cmsg level or type!\n"); return 0; }