Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp553114pxf; Wed, 17 Mar 2021 10:20:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOmOsiDyy56WkSEKd5N56gQWZ2zQzAyHRTM1nMxWlYhyIVfCL0rD05W0r6ZW2P5PCxUjL3 X-Received: by 2002:aa7:c0c7:: with SMTP id j7mr43247515edp.298.1616001608019; Wed, 17 Mar 2021 10:20:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616001608; cv=none; d=google.com; s=arc-20160816; b=my9bNchSYXspvW17V/3Q6amCiXqbLdt+XabuQvpDm0I/2slz9Vsnzr0r6lqndqn1rp I7HRclMJdt7IkY+opMeRSNprAiatZBSvsH04ZxEYYczR8qvLACZNCr22MiMXrDxrK5jZ NTZQ0Kpt7mXpMM9xCcg9ELYEYUNXFniPqRFT6RMqLuW4AyJmeWy3x5z3AAvHqJ3PYQYu 7EyK7BWs2Ze7M9cXaZNoqF9bNssrKO0EhtzZR31SSes6CLMz90xBH+tB/y7UrgQFHX+j XV762CQH5gYf4Ds71Y+iFvu0u4pjl9pvGjRShkiUMHU7Btb8ZX0hY5StBZQapMcG+LME m6Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=gFzgiixZLTNF8UXp0HGJleycevWtLybmoska9MxLJ9k=; b=PBGgAQxwE0EzSFEqZ8TqMUpNTbl/gJa1U5viQtwOODmFiZAl2rLZ3zjlPLUs4iXkNw UcVR3AxRYahBKGAnBUAfAfY8BhZti/WhRxKWEknSneEvzYE/BiQnDeMB5S+GDI6tHPw0 kdhzwYgP5PWq/wElb7qMkXhlEC3prjfXgfb4nftv/uZK4Jhcb5+f26h6WCgf8jDRbUPT pF1MInQmT3YnGCbNQX2Rk60emlkNw11n9jN/rtsxPU1VhqUo3KTxmUCBpFsXJksvnJua TQbrOLuRD1mYroUQp8y76QMHBi3ABDYpHSUpYoiqr3TJInvE0HQoaWv06V5lzugOnTJx 9gzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=kdd6Rd1I; 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=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g16si17164470ejf.96.2021.03.17.10.19.45; Wed, 17 Mar 2021 10:20:07 -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=@suse.com header.s=susede1 header.b=kdd6Rd1I; 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=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231990AbhCQPtF (ORCPT + 99 others); Wed, 17 Mar 2021 11:49:05 -0400 Received: from mx2.suse.de ([195.135.220.15]:37710 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231995AbhCQPsc (ORCPT ); Wed, 17 Mar 2021 11:48:32 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1615996110; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=gFzgiixZLTNF8UXp0HGJleycevWtLybmoska9MxLJ9k=; b=kdd6Rd1ITt9SgPEZiQlUAFhsLvUIYWkL7gw9A/kOgOEIOj0GpgVGkoaefxz2Evlt+KKkWv dmqGiLGzQgMsYTMEak/KLi54kMUFwpAdgeQKVcesMzGdB0vn1ZjV9fa7fqNr4mhUjYpquf Kf8ufL0gufZdKndFQcta/Ijfv2slBYY= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 93326ACA8; Wed, 17 Mar 2021 15:48:30 +0000 (UTC) Date: Wed, 17 Mar 2021 16:48:29 +0100 From: Michal Hocko To: Greg Kroah-Hartman Cc: Kees Cook , Andrew Morton , Alexey Dobriyan , Lee Duncan , Chris Leech , Adam Nichols , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-hardening@vger.kernel.org, Uladzislau Rezki Subject: Re: [PATCH v2] seq_file: Unconditionally use vmalloc for buffer Message-ID: References: <20210315174851.622228-1-keescook@chromium.org> <202103161205.B2181BDE38@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 17-03-21 16:38:57, Greg KH wrote: > On Wed, Mar 17, 2021 at 04:20:52PM +0100, Michal Hocko wrote: > > On Wed 17-03-21 15:56:44, Greg KH wrote: > > > On Wed, Mar 17, 2021 at 03:44:16PM +0100, Michal Hocko wrote: > > > > On Wed 17-03-21 14:34:27, Greg KH wrote: > > > > > On Wed, Mar 17, 2021 at 01:08:21PM +0100, Michal Hocko wrote: > > > > > > Btw. I still have problems with the approach. seq_file is intended to > > > > > > provide safe way to dump values to the userspace. Sacrificing > > > > > > performance just because of some abuser seems like a wrong way to go as > > > > > > Al pointed out earlier. Can we simply stop the abuse and disallow to > > > > > > manipulate the buffer directly? I do realize this might be more tricky > > > > > > for reasons mentioned in other emails but this is definitely worth > > > > > > doing. > > > > > > > > > > We have to provide a buffer to "write into" somehow, so what is the best > > > > > way to stop "abuse" like this? > > > > > > > > What is wrong about using seq_* interface directly? > > > > > > Right now every show() callback of sysfs would have to be changed :( > > > > Is this really the case? Would it be too ugly to have an intermediate > > buffer and then seq_puts it into the seq file inside sysfs_kf_seq_show. > > Oh, good idea. > > > Sure one copy more than necessary but it this shouldn't be a hot path or > > even visible on small strings. So that might be worth destroying an > > inherently dangerous seq API (seq_get_buf). > > I'm all for that, let me see if I can carve out some time tomorrow to > try this out. > > But, you don't get rid of the "ability" to have a driver write more than > a PAGE_SIZE into the buffer passed to it. I guess I could be paranoid > and do some internal checks (allocate a bunch of memory and check for > overflow by hand), if this is something to really be concerned about... Yes this is certainly possible and it will needs some way to address. My point was that we shouldn't cripple seq_file just because the API allows for an abuse. Sysfs needs to find a way to handle internal PAGE_SIZE buffer assumption in any case. -- Michal Hocko SUSE Labs