Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp2133321pxb; Mon, 11 Jan 2021 01:34:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJw7bpcrZRyvRBEvF4P8f2XXZXFKBJhCZEk7c0PF5/mU2hEdvEEEpObBFFe9dwBTKc2cKwPP X-Received: by 2002:aa7:c884:: with SMTP id p4mr13180572eds.72.1610357689031; Mon, 11 Jan 2021 01:34:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610357689; cv=none; d=google.com; s=arc-20160816; b=vvybHGxjrU096vjT6+KpW0MalTfoxhJ4EiFObnPeWkDZA2a2pfqIUYKf+W4WwU8jSy +p6Fh86sbcJyN5fuqgiQGNskqxVh6GMblfzCgKSqCws52iVkfIYkP1Lh98LeKl6y52BH ldkqZjESdhlXhDv3zvb4CjTOQDXdCPznVGtInM5q2KNOeUUUIEypyCF//1vHSmj1TiTs KF0drmOLh4ogs6CwY3nOJKu5D8Yfn1tlzeKCnt4fxcZDG3fm0HvzB7GMCFU22pJ7KaJa vtwa7XchxZJ27vXg4FD6FvdSwMLCbUUBfM/QLc2/MrsRPabMlBQxARKpSVBBzHjCgwmL TpHQ== 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=esG6VqDUFVCdrIj93XWTgBoGpprN/Tj8Y746iTS3G6E=; b=soHkglGVOz7vQr7gF4kdxUMQxbpBN/sSb3S2PhcU8r3yihv5Njq68dTG4XmNsrC4HB FZv1NNgVyJxhSBN53g131rmGDIYqimzEl7kCVBF+2zGBwM/6+ASQoPRJbIgYXFoYkLMm 8m1wgLchfVQR8rswPxgntnM6eVaN/k4ovB/jtH/V0qDYYTC5qJRvfpFY4u0hGKiyHd2z Nr4F5Cl6WRHff+CQrGGDK/Xc5RrE5/VauDUL3+lxcsEqn+IQU77a36LvEszmDUoyn8Xv x8OGqi4h63pMq/DHqpKSoxtcsEI0wxdnt6V72Nq349obuoagsLG5ZM3n4UQpaft4nauA wXsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@privacyrequired.com header.s=stigmate header.b=FN2qPUCZ; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m15si6705471edp.363.2021.01.11.01.34.25; Mon, 11 Jan 2021 01:34:49 -0800 (PST) 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=@privacyrequired.com header.s=stigmate header.b=FN2qPUCZ; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728147AbhAKJcu (ORCPT + 99 others); Mon, 11 Jan 2021 04:32:50 -0500 Received: from devianza.investici.org ([198.167.222.108]:48799 "EHLO devianza.investici.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728014AbhAKJcu (ORCPT ); Mon, 11 Jan 2021 04:32:50 -0500 Received: from mx2.investici.org (unknown [127.0.0.1]) by devianza.investici.org (Postfix) with ESMTP id 4DDpBB3lblz6v8y; Mon, 11 Jan 2021 09:21:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=privacyrequired.com; s=stigmate; t=1610356914; bh=esG6VqDUFVCdrIj93XWTgBoGpprN/Tj8Y746iTS3G6E=; h=From:To:Cc:Subject:Date:From; b=FN2qPUCZvFH/IZ0YLYBycGZFcJpyWjYGGfykmVSTJuZV05tIziDcSeJKecrsSv4wp uVSCsD6KzkFKD12eIVXt5GwY14fmhpVZugXoU1/HbDKhVQGaVjW74uXpIrMZoAU2Q6 q3NR9eC+uIHUr/PCdO2DigunGzRUpY/hemGVhy6I= Received: from [198.167.222.108] (mx2.investici.org [198.167.222.108]) (Authenticated sender: laniel_francis@privacyrequired.com) by localhost (Postfix) with ESMTPSA id 4DDpBB2CWkz6v8w; Mon, 11 Jan 2021 09:21:54 +0000 (UTC) From: laniel_francis@privacyrequired.com To: linux-kernel@vger.kernel.org Cc: akpm@linux-foundation.org, Francis Laniel Subject: [RFC PATCH v2 0/1] Create header for fortified string functions. Date: Mon, 11 Jan 2021 10:21:40 +0100 Message-Id: <20210111092141.22946-1-laniel_francis@privacyrequired.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Francis Laniel Hi. First, I hope your families, friends and yourself are fine. In a recent mail about the merge of a new fortified string function, Linus Torvalds suggested the creation of a dedicated header file for these functions: https://marc.info/?l=linux-mm-commits&m=160810366111244 This will make the code cleaner and also improve compile time for people who do not set CONFIG_FORTIFY_SOURCE. So, this patch creates fortify-string.h which is a new header which contains all the fortified versions of functions declared in string.h. Since code was moved, I might as well correct the warnings raised by checkpatch.pl. I benchmarked the code compilation with and without CONFIG_FORTIFY_SOURCE. To do this, I compiled 10 times a x86_64_defconfig'ured kernel using make -j4 and cleaning after each compilation. These compilations were first done without CONFIG_FORTIFY_SOURCE defined, then with this option defined. The results were collected using the time bash builtin and are the following (in seconds, rounded to 10^-3): | | min | max | mean | std. dev. | median | 99th percentile | | --- | ------- | ------- | ------- | --------- | ------- | --------------- | | w/o | 524.488 | 526.982 | 525.111 | 0.722 | 524.901 | 526.848 | | w/ | 529.502 | 531.795 | 529.939 | 0.671 | 529.783 | 531.633 | First, the results are quite stable as shown by the standard deviation (less than 1 second). On average, compile time without CONFIG_FORTIFY_SOURCE is 0.919% faster. For the median case, compiling without setting this option is 0.930% faster. Finally, with the 99th percentile, not using CONFIG_FORTIFY_SOURCE is 0.908% faster. Globally, using a different header seems to provide a roughly 1% faster compile time for people who do not set CONFIG_FORTIFY_SOURCE. This is not a huge gain... but still a gain! Especially on compilation which is an operation kernel developers do a lot. So, I await your opinions and reviews on this patch. Version history: * v2: Correct misguarded instructions which follow if. Best regards. Francis Laniel (1): string.h: Move fortified functions definitions in a dedicated header. include/linux/fortify-string.h | 302 +++++++++++++++++++++++++++++++++ include/linux/string.h | 282 +----------------------------- 2 files changed, 303 insertions(+), 281 deletions(-) create mode 100644 include/linux/fortify-string.h -- 2.20.1