diff --git a/net/socket.c b/net/socket.c
index 3c3d6abe4c1eef5f32073e8034aff54d360a223e..e08415b4f9397976af2c5c8fe6a4b3ca7a53ba44 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -500,7 +500,7 @@ static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)
 	if (f.file) {
 		sock = sock_from_file(f.file, err);
 		if (likely(sock)) {
-			*fput_needed = f.flags;
+			*fput_needed = f.flags & FDPUT_FPUT;
 			return sock;
 		}
 		fdput(f);