Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp848606pxb; Wed, 6 Oct 2021 17:11:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwpe7Wun0zVMnxs99Cv+OflR4vQbp38ZAhMZwsvrfJd85OQyNH66Q9C9gkxY8/jlCsmxbDH X-Received: by 2002:a17:90a:4a04:: with SMTP id e4mr1242999pjh.51.1633565502099; Wed, 06 Oct 2021 17:11:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633565502; cv=none; d=google.com; s=arc-20160816; b=xPKb/f/C5X9vtsSnqLOcYTvBUnvyT5D7TTRTg5u5nRA9/RAFj9EO6gw0YL5ehH64sg xMFu9uchWhiWYXy2jZqjUn5/5y0oIy9CaQiaMRpEmneblco6WxNQkdpaPVj8HlPYtns7 US9yjxyU4PkBpf3jKh9jeUxTB0Rfn/6JDWOreM3NdRpVegyrOL27JGW2MSrgqV/ykMlZ mHwB4LLaD0qQCZJnGqRf3fd4SCrJi9nZFI+1iatk40svp32Yk3MEU+XkCNww7S5y5GjD KuZz3nQx9wOqltbTcxo4ce1J19kv1u6OqhAb0Xx2Ju30+vkYZzqD9WtSpiCtqgMgOCdo xCUA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ER5WeqZHv4e5QUzYa734QUR0PoxbR0U3SjMD2lEHAUA=; b=MJ80BEjgaTYKe4Eki2mMFOy9M0b1RVXOPydTyjmK7AJbf5SIxcvgyuuNvWAG40xKlu lWIFXiK8KsICTSmWfGeZO5R72cKdXs5JWtRDkL7UQUzk/9lYFITv/euh7gwgWSzpTwNL AiI2gs/Xbjy/e2U7Hj9TYHFQi0cBInDJNUzBzN5sx+1HUFhoYMDCt+R0dV1jW+Lq/zz8 FcZlMYSTR4flfXn4yL8NuV00fgJ1zZ+uq38jUVmxS7FHQ7nJGDncLiDxv+/t9aeqQ1sI TM78MNLzyiKzby1mrHTogkLlM8LNqS6j3JV16qJGNPW0xgf+HaNyVwJgDslDISprtt2u I9vA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bewilderbeest.net header.s=thorn header.b=keZbSDNA; 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=bewilderbeest.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id me17si8200169pjb.116.2021.10.06.17.11.28; Wed, 06 Oct 2021 17:11:42 -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=@bewilderbeest.net header.s=thorn header.b=keZbSDNA; 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=bewilderbeest.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240030AbhJGAMK (ORCPT + 99 others); Wed, 6 Oct 2021 20:12:10 -0400 Received: from thorn.bewilderbeest.net ([71.19.156.171]:40227 "EHLO thorn.bewilderbeest.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239978AbhJGAMB (ORCPT ); Wed, 6 Oct 2021 20:12:01 -0400 Received: from hatter.bewilderbeest.net (71-212-29-146.tukw.qwest.net [71.212.29.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: zev) by thorn.bewilderbeest.net (Postfix) with ESMTPSA id F2E326E4; Wed, 6 Oct 2021 17:10:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bewilderbeest.net; s=thorn; t=1633565408; bh=ER5WeqZHv4e5QUzYa734QUR0PoxbR0U3SjMD2lEHAUA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=keZbSDNA1mMasatHDQtMaMkueuv/Wl/NrVxagKzSv9B2w8npcfZGhAiaoF/dNtDER 98B2ey8BNFF1lhoTJc0FXByC7wJz63gmpbx1r9/VHzznuwcPdM8OV/l3krJd2TqiSp u1ld/Adc8PuzQ9G8CgUPBkNOwKQCzWRQxjBbcbGQ= From: Zev Weiss To: openbmc@lists.ozlabs.org Cc: Greg Kroah-Hartman , Jeremy Kerr , Joel Stanley , Rob Herring , devicetree@vger.kernel.org, Zev Weiss , "Rafael J. Wysocki" , Dan Williams , Bjorn Helgaas , Daniel Vetter , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Heiner Kallweit , linux-kernel@vger.kernel.org Subject: [PATCH 2/9] sysfs: add growable flag to struct bin_attribute Date: Wed, 6 Oct 2021 17:09:47 -0700 Message-Id: <20211007000954.30621-3-zev@bewilderbeest.net> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211007000954.30621-1-zev@bewilderbeest.net> References: <20211007000954.30621-1-zev@bewilderbeest.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Previously, sysfs_kf_bin_write() unconditionally disallowed writing past the existing size of the file. In order to support mutable device-tree status properties (which are bin_attributes), we need to be able to write a longer value over a shorter existing one (e.g. writing "reserved\n" over "okay\0"). bin_attributes that require this can now set the growable flag to disable that checking and allow arbitrary amounts of data to be written at arbitrary offsets. Signed-off-by: Zev Weiss --- fs/sysfs/file.c | 2 +- include/linux/sysfs.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index b2b85be95adf..156df003ea8f 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -147,7 +147,7 @@ static ssize_t sysfs_kf_bin_write(struct kernfs_open_file *of, char *buf, struct kobject *kobj = of->kn->parent->priv; loff_t size = file_inode(of->file)->i_size; - if (size) { + if (!battr->growable && size) { if (size <= pos) return -EFBIG; count = min_t(ssize_t, count, size - pos); diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index 49de5189cf88..f8a56094c6c9 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h @@ -175,6 +175,7 @@ struct address_space; struct bin_attribute { struct attribute attr; size_t size; + bool growable:1; void *private; struct address_space *(*f_mapping)(void); ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, -- 2.33.0