Received: by 2002:a25:5b86:0:0:0:0:0 with SMTP id p128csp902718ybb; Thu, 28 Mar 2019 14:42:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqxsGx/WP5PcXTNRcZCFTmQl3Y7M86iv/GuwZyOq6xRvhArWgg6so7hldR6Rqxsa/V+nlIDI X-Received: by 2002:a63:6fc1:: with SMTP id k184mr29931775pgc.239.1553809362517; Thu, 28 Mar 2019 14:42:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553809362; cv=none; d=google.com; s=arc-20160816; b=OI8TSvPk4c6cf+YQeFF+yzwP4DTXXyS8zxm1uW1NIpyhWoioZ9KZlSVN5xAMIr+1I4 yeJxRWqoRvDAe7I+LzMrYJc5cIBvDEJ8bZU7AdZpVYuA61Sn/8UEps86kt9xeQKRG1q5 eKkoM7uE/tXmRlTXGaS9Nwwq5KpizHXLhUeUkScNDMdk4rFY+6fZqm7FbY/hnCRXY9zL KNp0UEbpplJbNmTIFl461jFpbKI4FvFTuADGLJmeSjQri1+1yB0CGxn+AciTr+JMmEJ7 3UBQOLUc0Q5rWW+hw6An/+2ypWCdSjCnnoY69f8H7Zs+2N+Eemw3VW5K8GH/n2gz43I1 MDdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=KR/PYjuHjmR2pTok0L7VRZRzhxqfQwt1GPNogxde8jM=; b=ebagQTPeHYy+96KtCcx2xfepxEsfafIIWBzg6TA3UuqPhbcn76DGB6kU7qe6M1xL6h 9pTO1YFpJN9RX3Mi1SESpHf5ILgylOfjoLpfV/BEG418KPDYR8qDufp9gZCohtwNcv29 PpjgH107ZnLR5UQSqT87ME/qXhiwzMsJ1/fmKQwG7y9qHJFM4OIRLsotbP5Bt7NGPiUW z6M659BDDFQNswtZjL6KPSBa/WstHDcHHul1gKPKewWVElukWBKaqcVbi6wNGKnww2Jf 4QFJSAgJ2RnBZL0BiI8996nRCC5uDYRt9HDEj8iquvDKucXysrXd+Ff3SBSPtSC1gs74 kO4g== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m13si174684pga.331.2019.03.28.14.42.27; Thu, 28 Mar 2019 14:42:42 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727893AbfC1Vkh (ORCPT + 99 others); Thu, 28 Mar 2019 17:40:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33554 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726249AbfC1Vkg (ORCPT ); Thu, 28 Mar 2019 17:40:36 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D51813082135; Thu, 28 Mar 2019 21:40:35 +0000 (UTC) Received: from madcap2.tricolour.ca (ovpn-112-19.phx2.redhat.com [10.3.112.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EFEA319C77; Thu, 28 Mar 2019 21:40:25 +0000 (UTC) Date: Thu, 28 Mar 2019 17:40:23 -0400 From: Richard Guy Briggs To: Paul Moore Cc: Ondrej Mosnacek , nhorman@tuxdriver.com, linux-api@vger.kernel.org, containers@lists.linux-foundation.org, LKML , David Howells , Linux-Audit Mailing List , netfilter-devel@vger.kernel.org, "Eric W . Biederman" , Simo Sorce , netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, Eric Paris , "Serge E. Hallyn" Subject: Re: [PATCH ghak90 V5 09/10] audit: add support for containerid to network namespaces Message-ID: <20190328214023.qpszfvxbrjlldmmt@madcap2.tricolour.ca> References: <27473c84a274c64871cfa8e3636deaf05603c978.1552665316.git.rgb@redhat.com> <20190328011202.6raixwzdimn5b4zk@madcap2.tricolour.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 28 Mar 2019 21:40:36 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-03-28 11:46, Paul Moore wrote: > On Wed, Mar 27, 2019 at 9:12 PM Richard Guy Briggs wrote: > > > > On 2019-03-27 23:42, Ondrej Mosnacek wrote: > > > On Fri, Mar 15, 2019 at 7:35 PM Richard Guy Briggs wrote: > > > > Audit events could happen in a network namespace outside of a task > > > > context due to packets received from the net that trigger an auditing > > > > rule prior to being associated with a running task. The network > > > > namespace could be in use by multiple containers by association to the > > > > tasks in that network namespace. We still want a way to attribute > > > > these events to any potential containers. Keep a list per network > > > > namespace to track these audit container identifiiers. > > > > > > > > Add/increment the audit container identifier on: > > > > - initial setting of the audit container identifier via /proc > > > > - clone/fork call that inherits an audit container identifier > > > > - unshare call that inherits an audit container identifier > > > > - setns call that inherits an audit container identifier > > > > Delete/decrement the audit container identifier on: > > > > - an inherited audit container identifier dropped when child set > > > > - process exit > > > > - unshare call that drops a net namespace > > > > - setns call that drops a net namespace > > > > > > > > See: https://github.com/linux-audit/audit-kernel/issues/92 > > > > See: https://github.com/linux-audit/audit-testsuite/issues/64 > > > > See: https://github.com/linux-audit/audit-kernel/wiki/RFE-Audit-Container-ID > > > > Signed-off-by: Richard Guy Briggs > > > > --- > > > > include/linux/audit.h | 19 ++++++++++++ > > > > kernel/audit.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++-- > > > > kernel/nsproxy.c | 4 +++ > > > > 3 files changed, 106 insertions(+), 3 deletions(-) > > > > > > > > diff --git a/include/linux/audit.h b/include/linux/audit.h > > > > index fa19fa408931..70255c2dfb9f 100644 > > > > --- a/include/linux/audit.h > > > > +++ b/include/linux/audit.h > > > > @@ -27,6 +27,7 @@ > > > > #include > > > > #include /* LOOKUP_* */ > > > > #include > > > > +#include > > > > > > > > #define AUDIT_INO_UNSET ((unsigned long)-1) > > > > #define AUDIT_DEV_UNSET ((dev_t)-1) > > > > @@ -99,6 +100,13 @@ struct audit_task_info { > > > > > > > > extern struct audit_task_info init_struct_audit; > > > > > > > > +struct audit_contid { > > > > + struct list_head list; > > > > + u64 id; > > > > + refcount_t refcount; > > > > > > Hm, since we only ever touch the refcount under a spinlock, I wonder > > > if we could just make it a regular unsigned int (we don't need the > > > atomicity guarantees). OTOH, refcount_t comes with some extra overflow > > > checking, so it's probably better to leave it as is... > > > > Since the update is done using rcu-safe methods, do we even need the > > spin_lock? Neil? Paul? > > As discussed, the refcount field is protected against simultaneous > writes by the spinlock that protects additions/removals from the list > as a whole so I don't believe the refcount_t atomicity is critical in > this regard. > > Where it gets tricky, and I can't say I'm 100% confident on my answer > here, is if refcount was a regular int and we wanted to access it > outside of a spinlock (to be clear, it doesn't look like this patch > currently does this). With RCU, if refcount was a regular int > (unsigned or otherwise), I believe it would be possible for different > threads of execution to potentially see different values of refcount > (assuming one thread was adding/removing from the list). Using a > refcount_t would protect against this, alternatively, taking the > spinlock should also protect against this. Ok, from the above it isn't clear to me if you are happy with the current code or would prefer any changes, or from below that you still need to work it through to make a pronouncement. It sounds to me you would be ok with *either* spinlock *or* refcount_t, but don't see the need for both. > As we all know, RCU can be tricky at times, so I may be off on the > above; if I am, please provide an explanation so I (and likely others > as well) can learn a little bit more. :) > > -- > paul moore > www.paul-moore.com - RGB -- Richard Guy Briggs Sr. S/W Engineer, Kernel Security, Base Operating Systems Remote, Ottawa, Red Hat Canada IRC: rgb, SunRaycer Voice: +1.647.777.2635, Internal: (81) 32635