Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp768868imm; Wed, 4 Jul 2018 05:47:10 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcWXS8oKS96YDKpCC6Zfn4aoLJrRrlqdJlcRiiuSlxT34vkUzodrppdOWzaz8OVhyzRe3yo X-Received: by 2002:a62:1489:: with SMTP id 131-v6mr2062903pfu.159.1530708430498; Wed, 04 Jul 2018 05:47:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530708430; cv=none; d=google.com; s=arc-20160816; b=JoFwUTT0ADmIvBePOsKD7/G5QXvTBmFBu+UpgJzPJSPKRxS39B4t5CYr6JWxtELtqB TvTFyxfFDbpwSh9UDRWFnzliYQy3tvEnpvHur9pYf1nJQbG8nDbp6mo5CVjCG3PbTTa/ zDP1esZGLUc/5Couww9lpR+58vroyPW1/ITyKn8jsEqPVtUdl8MnjggmVDgPy7PiXn6e bCmZeZdW1QeyDzGnqAMBKmeziQn8bLq7rIakzBsp/qgqx1Tgn1YLs6yfkhuUwk0uEIru /T8w6Hu18d+GZxOFeu6n4VYmgQ+RJF/gUuG7ZBNsLIxTDPb5mojHYrA+CbYVE/p0XMtp Mmng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=LU3J3/CfO6FM194Coy3rUXXbyAw/CpZhUNb4oUzwX4s=; b=LuzgLh9dbjb3h8UlKPkg6kU7awOcYWtIuGfPZQFiuVCOUr6jywIUlt2JRhOzyQ5TPY nyAgvBXWCVI4/lEVIIvMyOQsFBsCi6cqjX31NpASltm9y3tw3QQ7GECkQXQsoGg4ftQ9 O+NwMnYHcvS0y4Qdzvyek0KOOW0lSxjE5YJrSXYRSYajVaLoO/HHRa0dg+2LHV8DEuXZ 6PSyD+0sykuYf3u0ngztb8l7qYl9qseGaYOiRfbF5d1eydhvU7pD+0PHGC7cZ3GjfIaF yqu/GhGFkVlFUfxTB9YnIjgsN8vYlXx/Zcr9KUULuLsiHpJeHTWw9AakOYaYmexf1wXW gGwQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l64-v6si3292702pga.120.2018.07.04.05.46.56; Wed, 04 Jul 2018 05:47:10 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933753AbeGDMpa (ORCPT + 99 others); Wed, 4 Jul 2018 08:45:30 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:41143 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934696AbeGDMmZ (ORCPT ); Wed, 4 Jul 2018 08:42:25 -0400 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fah6m-0001dX-Qp; Wed, 04 Jul 2018 14:42:08 +0200 Received: from sha by dude.hi.pengutronix.de with local (Exim 4.91) (envelope-from ) id 1fah6l-0005Zv-KT; Wed, 04 Jul 2018 14:42:07 +0200 From: Sascha Hauer To: linux-mtd@lists.infradead.org Cc: David Gstir , Richard Weinberger , kernel@pengutronix.de, linux-kernel@vger.kernel.org, Sascha Hauer Subject: [PATCH 15/25] ubifs: Add auth nodes to garbage collector journal head Date: Wed, 4 Jul 2018 14:41:27 +0200 Message-Id: <20180704124137.13396-16-s.hauer@pengutronix.de> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180704124137.13396-1-s.hauer@pengutronix.de> References: <20180704124137.13396-1-s.hauer@pengutronix.de> X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: sha@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To be able to authenticate the garbage collector journal head add authentication nodes to the buds the garbage collector creates. Signed-off-by: Sascha Hauer --- fs/ubifs/gc.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c index ac3a3f7c6a6e..8feeeb12b6ed 100644 --- a/fs/ubifs/gc.c +++ b/fs/ubifs/gc.c @@ -365,12 +365,13 @@ static int move_nodes(struct ubifs_info *c, struct ubifs_scan_leb *sleb) /* Write nodes to their new location. Use the first-fit strategy */ while (1) { - int avail; + int avail, moved = 0; struct ubifs_scan_node *snod, *tmp; /* Move data nodes */ list_for_each_entry_safe(snod, tmp, &sleb->nodes, list) { - avail = c->leb_size - wbuf->offs - wbuf->used; + avail = c->leb_size - wbuf->offs - wbuf->used - + ubifs_auth_node_sz(c); if (snod->len > avail) /* * Do not skip data nodes in order to optimize @@ -378,14 +379,19 @@ static int move_nodes(struct ubifs_info *c, struct ubifs_scan_leb *sleb) */ break; + ubifs_shash_update(c, c->jheads[GCHD].log_hash, + snod->node, snod->len); + err = move_node(c, sleb, snod, wbuf); if (err) goto out; + moved = 1; } /* Move non-data nodes */ list_for_each_entry_safe(snod, tmp, &nondata, list) { - avail = c->leb_size - wbuf->offs - wbuf->used; + avail = c->leb_size - wbuf->offs - wbuf->used - + ubifs_auth_node_sz(c); if (avail < min) break; @@ -403,7 +409,32 @@ static int move_nodes(struct ubifs_info *c, struct ubifs_scan_leb *sleb) continue; } + ubifs_shash_update(c, c->jheads[GCHD].log_hash, + snod->node, snod->len); + err = move_node(c, sleb, snod, wbuf); + if (err) + goto out; + moved = 1; + } + + if (ubifs_authenticated(c) && moved) { + struct ubifs_auth_node *auth; + + auth = kmalloc(ubifs_auth_node_sz(c), GFP_NOFS); + if (!auth) { + err = -ENOMEM; + goto out; + } + + ubifs_prepare_auth_node(c, auth, + c->jheads[GCHD].log_hash); + + err = ubifs_wbuf_write_nolock(wbuf, auth, + ubifs_auth_node_sz(c)); + + kfree(auth); + if (err) goto out; } -- 2.18.0