Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp114558pxb; Wed, 6 Oct 2021 00:51:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzHXenFWR/z2TdkQVy1iXnWVe/R7exKNzQk8pzeYjBylAXovSOCdTsr3GKLx1ARXoInWI5D X-Received: by 2002:a17:906:789:: with SMTP id l9mr27013091ejc.61.1633506699176; Wed, 06 Oct 2021 00:51:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633506699; cv=none; d=google.com; s=arc-20160816; b=yZUvuHOVrVnNwEFbA7XXWf9nRY89h/mEkz3oGNoUyMzhadv6ew1LJSCVE4NjF1JXxM fu66p/1/wLC5xZiAmzTK3XNtC9ZPiy5/yfA6lg+1UIcofVoYJc/fwdUGmTtl8O54nNW3 ZKzLmm005TEhzLueFxsxNhEfAOaoX8iFnXEN+HHkrdc5NBO7sIuJgFWr1+2hqUGFiWX2 2M6UIx5ejihhREp93EAfZ86nMUUvnvmj8JDfY2pRtiZY12CbSlQCUL7SIi2NMdDEUb0I W19I6AY+0TMuWDEl4IEWJY7dKKyRtvrP7LsTc6myEp/rCX+8J0x9Rnkffeo8wZ+zb+Yj 84IQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=vC+peXbLyhoq34gt4sxSNbbrHWOmoJrZoXCJA5n8nTE=; b=OEvEeDBwEoqpMIUrEAXaRXlOwLTFCkiEqaMjrzBzajYvbQpOx7cxIY7mkay2tSK8g8 i22xVgs8pVc4tTJECXvDjZwm6HRXiEa104VijQRO1/HOM8HdqcdOdwaT4BqLRAo2l8jQ 5Vs+W8B0lZxfial5ir07+obPsYFQPSfokpHi1ddZapA9NtD6pY07p/8iuP3acs5uaYy2 BVPrtFqoJzkFsJd3YRpna5mnq8w3toA1av3PWoMI55ZbgVEL7Yi/rturNG55s1iNVWZH TT/rag8ec1mH/roPQNPCi1i2CQBs8oDZAHcQFzfSFXS+fRQwOyWsEKULn8zJgMgY2C7Y 6Hgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=sLQOXhEh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e4si9987899ejs.733.2021.10.06.00.51.15; Wed, 06 Oct 2021 00:51:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=sLQOXhEh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237638AbhJFHtK (ORCPT + 99 others); Wed, 6 Oct 2021 03:49:10 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:57108 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237470AbhJFHtJ (ORCPT ); Wed, 6 Oct 2021 03:49:09 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id F20D92032B; Wed, 6 Oct 2021 07:47:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1633506437; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=vC+peXbLyhoq34gt4sxSNbbrHWOmoJrZoXCJA5n8nTE=; b=sLQOXhEh339PQDju3r6xJSdrs8uugt0IbtE6JsxmVA839RSk5a4WiTWFEdXV9rguEVbK6A YhV7m53gqbB2pC41oeMpVRSsBQuFLNXHvurGAa550rRQpgAI/Eu5x9WUGUGU4TT90w3fg8 5ZwMJU/5QOWGa65mV6PHBTuyxyWSYOI= Received: from g78.suse.de (unknown [10.163.24.38]) by relay2.suse.de (Postfix) with ESMTP id C1EA6A3B84; Wed, 6 Oct 2021 07:47:15 +0000 (UTC) From: Richard Palethorpe To: Arnd Bergmann Cc: Richard Palethorpe , "David S. Miller" , Jakub Kicinski , Stefano Garzarella , Arseny Krasnov , Colin Ian King , Norbert Slusarek , Andra Paraschiv , Deepa Dinamani , Willem de Bruijn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rpalethorpe@richiejp.com Subject: [PATCH] vsock: Handle compat 32-bit timeout Date: Wed, 6 Oct 2021 08:45:47 +0100 Message-Id: <20211006074547.14724-1-rpalethorpe@suse.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow 32-bit timevals to be used with a 64-bit kernel. This allows the LTP regression test vsock01 to run without modification in 32-bit compat mode. Fixes: fe0c72f3db11 ("socket: move compat timeout handling into sock.c") Signed-off-by: Richard Palethorpe --- This is one of those fixes where I am not sure if we should just change the test instead. Because it's not clear if someone is likely to use vsock's in 32-bit compat mode? net/vmw_vsock/af_vsock.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 3e02cc3b24f8..6e9232adf8d0 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1616,7 +1616,16 @@ static int vsock_connectible_setsockopt(struct socket *sock, case SO_VM_SOCKETS_CONNECT_TIMEOUT: { struct __kernel_old_timeval tv; - COPY_IN(tv); + struct old_timeval32 tv32; + + if (in_compat_syscall() && !COMPAT_USE_64BIT_TIME) { + COPY_IN(tv32); + tv.tv_sec = tv32.tv_sec; + tv.tv_usec = tv32.tv_usec; + } else { + COPY_IN(tv); + } + if (tv.tv_sec >= 0 && tv.tv_usec < USEC_PER_SEC && tv.tv_sec < (MAX_SCHEDULE_TIMEOUT / HZ - 1)) { vsk->connect_timeout = tv.tv_sec * HZ + @@ -1694,11 +1703,20 @@ static int vsock_connectible_getsockopt(struct socket *sock, case SO_VM_SOCKETS_CONNECT_TIMEOUT: { struct __kernel_old_timeval tv; + struct old_timeval32 tv32; + tv.tv_sec = vsk->connect_timeout / HZ; tv.tv_usec = (vsk->connect_timeout - tv.tv_sec * HZ) * (1000000 / HZ); - COPY_OUT(tv); + + if (in_compat_syscall() && !COMPAT_USE_64BIT_TIME) { + tv32.tv_sec = (u32)tv.tv_sec; + tv32.tv_usec = (u32)tv.tv_usec; + COPY_OUT(tv32); + } else { + COPY_OUT(tv); + } break; } default: -- 2.33.0