Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp172228pxb; Mon, 13 Sep 2021 16:13:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxiFQpcQDl94c+nEJrhRK4O1PG/SNWlqmjsDoFFszQ1b3/wEBDwIqeupag5dIo8G9Bn425b X-Received: by 2002:a05:6e02:cc5:: with SMTP id c5mr8701202ilj.110.1631574809477; Mon, 13 Sep 2021 16:13:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631574809; cv=none; d=google.com; s=arc-20160816; b=bqEguWIgef/h9ni9UMUS5eNBxFKydtVUTzeEIs+ipDR37oY07zjP2GQCVKzSgMzWMy h9wqe+nGdAA2fpdk7LA+LM5d0oStYmeN+cRTVn/vB/LJiRWaiQVw/P9M4vIsvFy8An/f jyWH0Q6YrYyLrsfhTsJCBwzuq3ZWNBs7KJmqmeDBAwt0zzy7O1mzY1boY79PlLHJxGEZ B5EjcEq9YuwT9pYq6jpX2fJKYH3bYgyE9ENANN0t5aXWEQTaWVIUeuIj7KLlIvqhRm0L dK7KLV8XrulCLhQgkcjAMTs0c1JgwpNUYK0aD/l0qlZTHSMd+afD6T8bHt7C6b/dTLHy uR2g== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qyM26VHBG6cx1FvfzKPcvKlYel44HBPJACWjbzu+RZA=; b=TBOqr/cbDOay9DrSx6KoE0Q/SBNohXBNwc/1s9130X8EMRMJNdrmO9hQBzTByv/xK0 YSMqPtQyprsTqiHl6YhosMG1F6ruq2Uo/ruVwNt4vcQU6LyM4oHpE6N6t5upDFnEU+Lu gBis7GVzsDvIfnMUxH04nXPCCZXb1E2g9L9/Hike7KkX4vQ4g7nDRMwQn8y/If521S/c MDcWuV96O4Khdra+pp6QPNTD5fkzQ+pBj2x7+0WADi1ZxYQ3sMQjrGkto6vuRiO+mqaU vcUa/LasSyI8NVEg5z7qhhMAXyEjxQLcLd725eMCVeECdEBLYAmRJWq7dEqevDkzmevW 9gVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=D8L5GnAD; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 187si8263612jaf.20.2021.09.13.16.13.18; Mon, 13 Sep 2021 16:13:29 -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=@linuxfoundation.org header.s=korg header.b=D8L5GnAD; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347695AbhIMOoZ (ORCPT + 99 others); Mon, 13 Sep 2021 10:44:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:56442 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344647AbhIMOiQ (ORCPT ); Mon, 13 Sep 2021 10:38:16 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 762F761BFB; Mon, 13 Sep 2021 13:54:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631541294; bh=lt2d/6xG79Pm5RiHOz0sUo5GqEsJxbZVv/fJEDxiuOA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D8L5GnAD5aSkZScCJvSWIvtRnRkoctXkqFhCHuG/xrAnHVenZWpfT5vlKaRt8mhC5 uhDU3CH+6O7JGYsxcmhh5gmomUPnqrhk+2vMQhefZL07xVlMT5rFuumqshwv4L+pf1 GlXRyy8HMdtk9N5HHeFc9fKNifHiJktY+L7Rc2fI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ilya Leoshkevich , Andrii Nakryiko , Sasha Levin Subject: [PATCH 5.14 208/334] selftests/bpf: Fix test_core_autosize on big-endian machines Date: Mon, 13 Sep 2021 15:14:22 +0200 Message-Id: <20210913131120.453477361@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210913131113.390368911@linuxfoundation.org> References: <20210913131113.390368911@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ilya Leoshkevich [ Upstream commit d164dd9a5c08c16a883b3de97d13948c7be7fa4d ] The "probed" part of test_core_autosize copies an integer using bpf_core_read() into an integer of a potentially different size. On big-endian machines a destination offset is required for this to produce a sensible result. Fixes: 888d83b961f6 ("selftests/bpf: Validate libbpf's auto-sizing of LD/ST/STX instructions") Signed-off-by: Ilya Leoshkevich Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20210812224814.187460-1-iii@linux.ibm.com Signed-off-by: Sasha Levin --- .../selftests/bpf/progs/test_core_autosize.c | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/test_core_autosize.c b/tools/testing/selftests/bpf/progs/test_core_autosize.c index 44f5aa2e8956..9a7829c5e4a7 100644 --- a/tools/testing/selftests/bpf/progs/test_core_autosize.c +++ b/tools/testing/selftests/bpf/progs/test_core_autosize.c @@ -125,6 +125,16 @@ int handle_downsize(void *ctx) return 0; } +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define bpf_core_read_int bpf_core_read +#else +#define bpf_core_read_int(dst, sz, src) ({ \ + /* Prevent "subtraction from stack pointer prohibited" */ \ + volatile long __off = sizeof(*dst) - (sz); \ + bpf_core_read((char *)(dst) + __off, sz, src); \ +}) +#endif + SEC("raw_tp/sys_enter") int handle_probed(void *ctx) { @@ -132,23 +142,23 @@ int handle_probed(void *ctx) __u64 tmp; tmp = 0; - bpf_core_read(&tmp, bpf_core_field_size(in->ptr), &in->ptr); + bpf_core_read_int(&tmp, bpf_core_field_size(in->ptr), &in->ptr); ptr_probed = tmp; tmp = 0; - bpf_core_read(&tmp, bpf_core_field_size(in->val1), &in->val1); + bpf_core_read_int(&tmp, bpf_core_field_size(in->val1), &in->val1); val1_probed = tmp; tmp = 0; - bpf_core_read(&tmp, bpf_core_field_size(in->val2), &in->val2); + bpf_core_read_int(&tmp, bpf_core_field_size(in->val2), &in->val2); val2_probed = tmp; tmp = 0; - bpf_core_read(&tmp, bpf_core_field_size(in->val3), &in->val3); + bpf_core_read_int(&tmp, bpf_core_field_size(in->val3), &in->val3); val3_probed = tmp; tmp = 0; - bpf_core_read(&tmp, bpf_core_field_size(in->val4), &in->val4); + bpf_core_read_int(&tmp, bpf_core_field_size(in->val4), &in->val4); val4_probed = tmp; return 0; -- 2.30.2