Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3038649imm; Sun, 29 Jul 2018 08:58:30 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcbLXABEa7Hy6epE+Rr8EAs/GR743XvxSNKpbqH2yq0WWpWbUHMYyIqB392rqXOtwE4Dc1S X-Received: by 2002:a62:3ece:: with SMTP id y75-v6mr14560435pfj.7.1532879910349; Sun, 29 Jul 2018 08:58:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532879910; cv=none; d=google.com; s=arc-20160816; b=GMJOtRU30Evwck8YGQtE/Rgkh3WsvYkeS6B67SIYYs+QpV0LQt+zr2gj68yOu2bLFH QEraKMqJWGgB0AHecy0tvousiPZv9248yyn91lMmznxP02VZcQ3cCrdTsMTVBFDc02/A rwxaMvxfeZ2Vy7AiO2xKm3sWJiZjwzYaUbosgigHq2YzAwSCI4+aZSgf4a2Wey6r/Zkc 6rFVua2Z3zHQX5GlGDbN3AXbQkabaNe24vm2UNgFL6tutEteXbhrsTohFNJIz6kuTIuL 9o+EVLpH53+AyVlTQiVLkRNA8UiT2VpJ2t3pDcpVQ2OHX0VeE9YGadX0a+6UY0jUEZu9 OKKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :mime-version:dkim-signature:arc-authentication-results; bh=qik5EZhO6nCv6/GEahsT+raUFb0n02OsuKth8kudm0U=; b=wQV5gSi2nwcr+MMPQUK7zHacm613vGKQllI/8dK9t0GYXdHQ7Jk9zc3dGCuZ1B9GY2 KKJh0LIyzzy6vx89d6qdHv2WScDKdqn2O2EQ2R6HPf+klX/q6ZJ8DAjL88zFo/92M7wm qfNeC3WOztMoUjI0X/aluGkFsfael0IeKqBTcXMLUnWChcvsVJYoxauHQMceEfRMFaFP 0ZhQkvnEmWRRtZLlc3+Fl//34yj14X7GiJgUxa6/4TXNTwb1E4jB7Jsw/iLfxjBykukX io9C2+MeMN3GEt2fBhP/AI4I93m0dOzE2HderQkilgS8m3+jIkFQQSEut/jN8RtlkUMU QI1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Y2jIwzVz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r3-v6si8744581pgg.201.2018.07.29.08.58.15; Sun, 29 Jul 2018 08:58:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Y2jIwzVz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726495AbeG2R2W (ORCPT + 99 others); Sun, 29 Jul 2018 13:28:22 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:34927 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726354AbeG2R2W (ORCPT ); Sun, 29 Jul 2018 13:28:22 -0400 Received: by mail-wr1-f66.google.com with SMTP id a3-v6so10071411wrt.2; Sun, 29 Jul 2018 08:57:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=qik5EZhO6nCv6/GEahsT+raUFb0n02OsuKth8kudm0U=; b=Y2jIwzVzMUyKAL2xUU5oaNql0cTk+v2Ul++fMHHo0QVKFyV3rJvhcaxiQgh+IJBTEK IDVs8DEvaLMvlARpCSUoJEpBXpuNmCjQDida/r3I5rN0Q7AUzPHqNax5cY+JupV4m7fb VPGni7L8gcS0cXVLzFGvj2PKaDDZtVy1Zv90Ei4+EoTOS55uppeBAntVQnetsKn14VU6 wN0u74pFWzNX8YTmi14WhknKjgN77B/KCKfPqDKJlQuNpkpJ1DpoxQjgOgYqj6P3XyE5 S34jaez56CiQxqe4m9ceP7dCwdACrjalvw29c/4yBUMuRUwfIP6cp8e1pPT9GY+CJYKC 3pPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=qik5EZhO6nCv6/GEahsT+raUFb0n02OsuKth8kudm0U=; b=PEDM5MQGId5GwauCQrdONDz9w6I/BGsneZHGpWFHrTdM9HXuGrPvXYyacb0N+0WJIZ 9ocFMDG59RhKIoX2d1Lshjb7l7lZkn32nUa2s2c8NrMe7elYbbMc+qrnU5+gAsDNqmME 8sAGn4O9FaFLceU9FsQd8HgQh9cibeci+t4cGGkPCBSnVLpm7m0a9E8y9AzxOdtF5hEx WYQZUIpyJGXxRBG8WxULIpFSapbpCz9dYqY1GcqZ0AzT8phn1Urd4mw2XKlm7ZqWFfGG tOGQ4jMGBG4kngwCfiyn/LY8uVGNTz7xQrRgwdXv6M15FgxttGpp8j3KntmR/pq8kikz +7RA== X-Gm-Message-State: AOUpUlEVobYD1BIZcxsWk2oSYkbW/E86IPTNb3UXcEw4KXrO/XPFqGup +Zo29Lw+L+jUPg51IzPDa+2BAH6pz9wo1oV5XhE= X-Received: by 2002:adf:ba12:: with SMTP id o18-v6mr14493157wrg.249.1532879847255; Sun, 29 Jul 2018 08:57:27 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:e64f:0:0:0:0:0 with HTTP; Sun, 29 Jul 2018 08:57:06 -0700 (PDT) From: Alexei Starovoitov Date: Sun, 29 Jul 2018 18:57:06 +0300 Message-ID: Subject: Re: [RFC] Add BPF_SYNCHRONIZE bpf(2) command To: Daniel Colascione Cc: Joel Fernandes , Lorenzo Colitti , Chenbo Feng , Mathieu Desnoyers , Joel Fernandes , Alexei Starovoitov , lkml , Tim Murray , Daniel Borkmann , netdev Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 27, 2018 at 10:17 PM, Daniel Colascione wrote: > On Sat, Jul 14, 2018 at 11:18 AM, Joel Fernandes > wrote: >> >> By the way just curious I was briefly going through kernel/bpf/arraymap.c. >> How are you protecting against load-store tearing of values of array map >> updates/lookups? >> >> For example, if userspace reads an array map at a particular index, while >> another CPU is updating it, then userspace can read partial values / >> half-updated values right? Since rcu_read_lock is in use, I was hoping to >> find something like rcu_assign_pointer there to protect readers against >> concurrent updates. Thanks for any clarification. > > > I'm also curious about the answer to this question. i'm not sure I understand the question. bpf_map_type_array is a C-like array. There is no locking of elements. If single program executing on two cpus and accesses the same value it will collide. Same goes for user space vs prog parallel access. bpf long_memcpy is an attempt to provide minimal level of automicity when values are aligned and size==long.