Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1491548pxb; Thu, 4 Feb 2021 14:37:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJw13j1mjRnMV7EH6CbF6OZ9Wi7jBVg9hC0fyfSgGudOg6ccbEIi909Ns6bIKJeaJkz6xLap X-Received: by 2002:a17:906:eddd:: with SMTP id sb29mr1166507ejb.383.1612478260078; Thu, 04 Feb 2021 14:37:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612478260; cv=none; d=google.com; s=arc-20160816; b=QVsnhfvMAvLGNM9JVtOsqQ/0Pkz3p7ErNwQRjD1NIMvxzaJkoIvqn/lDdvZCu6u/ly zn0+87PDYscmjGUps3wRXH3mfGQooHncrnIGb9h8ztH9t+6lMz7k3GBVgXZ11P+G1WR2 Dlw3WKgWhXrBmoyVE6lCyUVLRBm2BIs+zF/UMxMMW7DsWFjONtXriUU6i9KBUZcY0LQj /Oar0pW0R+mAFCxtNYEV/itlIsS/R1ZNzbUE/hccLN57LdXbU38kIoqnd+1i/7y9yX/x dy7C5BrZ4ocyci3xkG2YMTxvWf1N3TkFYQtOpaLvXDdod26QlGDDGSq1DKiqagPkf7S7 t/6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=c/LawSxYi3ooi+jx8tMFJRDuOSYkGLnBjCJsS5cMwW0=; b=KVZO6DKAIw/Bm1ktCZGrer9pD6j7yKyHZpxBsq0oGvuRIiI5Ai7soUdOH8xQCH6AZY C9qTh7vkYxvHCH/aMh7TvOytl/YdQjohEhS5Qj2SOt1aVtybGGRNhcVVsJ5/9RWjh00m 7rLFCp8vxEhkZOkX0KGRovrkoLx2Wz77Lz8lcm6Kjn7fhOqybSIspqnSs7eUaJsWFqh+ P7yc9W540sezLORLmeuGkcFzXAJdmKIgQEDuLL9yK4KeRhzypFMPbKbNqGoYJfnb2WTk mX15T3ZbFfv19MFJuk8BYA/wfY18CtbLpMIFDqW4J31t7jMi/7mMUKWjxQx8exyf2AkQ oISw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="cIXN/L4+"; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i10si4547043ejd.240.2021.02.04.14.37.15; Thu, 04 Feb 2021 14:37:40 -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=@gmail.com header.s=20161025 header.b="cIXN/L4+"; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229554AbhBDWgX (ORCPT + 99 others); Thu, 4 Feb 2021 17:36:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229529AbhBDWgW (ORCPT ); Thu, 4 Feb 2021 17:36:22 -0500 Received: from mail-qt1-x829.google.com (mail-qt1-x829.google.com [IPv6:2607:f8b0:4864:20::829]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DE73C061786 for ; Thu, 4 Feb 2021 14:35:42 -0800 (PST) Received: by mail-qt1-x829.google.com with SMTP id r20so3697191qtm.3 for ; Thu, 04 Feb 2021 14:35:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=c/LawSxYi3ooi+jx8tMFJRDuOSYkGLnBjCJsS5cMwW0=; b=cIXN/L4+RBamqknWxJ/9/w3hWJCbFughWGOh8tKQhhbr1vyJlN2/Y6ezV8omFtTe+N aMxqaH/cgxkKM5dGNBRLf/O0b/4f3Qa72sChKuupte1DJVR5Wi6XU2Rfbj3iMOw/4GCG m5COjHVSDa9MjZLGnXOok4XnBUElnZSftpk2vP822PAsjPzUzpPQtzoAUvrcI+Qn9gwx nbKHg3eKzrD7QogB2c0S4re7q9qa2c5fdX1sHtiYFIGIDODHUpM0x/1uQWNeuAMJEOob GejXnwd3DINbfqbhuGtj+v3E/MaxIlbhRt9f83hr8NnKEhWKJPL055oj3Fzuaqtf4PIH z9DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=c/LawSxYi3ooi+jx8tMFJRDuOSYkGLnBjCJsS5cMwW0=; b=sKCPSYmS+Rrwb7246y5wblM7earZX6T42WN0qtsCUojwfTgVo8xl84hkqZB3HQw8+b LJb7Gg/GUpLRxgSudggPahtbo1OqnhO4n2HLKV+xl4p+DlXMSdwL21TRzjkIzgrQAK66 vQJzdaX4OdbVEfTZPdqFFrw1wrR1BjsQ5t9QzdK0Jqym+AhqNSpfGDsjA6b/8vzsWdAp b+QTwkrtx/Eyjx7Hx1A4MrrgZh8CEW9q10r6cLp+N6SqcMGxcRnWdCgtzDa6gTMtwnh5 cdaQ8OEVV/LoU1DnV0fQq+dO4IHB6nHcbc8GAbpkMlxHjwblxtx2OCdeezSeEqtDKbyZ V4AA== X-Gm-Message-State: AOAM533wIG89OtxjHly3KdwGFltgLg1rKa6INAo2FsG6Lt0ejzKq/0+u NOsbApaqV7ie61DbbuvnPDODwVT7VWuo35HLbJdDY19wuq7aQQ== X-Received: by 2002:ac8:5bc4:: with SMTP id b4mr1822554qtb.240.1612478141862; Thu, 04 Feb 2021 14:35:41 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: "Oliver O'Halloran" Date: Fri, 5 Feb 2021 09:35:31 +1100 Message-ID: Subject: Re: [PATCH] arch:powerpc simple_write_to_buffer return check To: Mayank Suman Cc: Russell Currey , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , linuxppc-dev , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 5, 2021 at 5:17 AM Mayank Suman wrote: > > Signed-off-by: Mayank Suman commit messages aren't optional > --- > arch/powerpc/kernel/eeh.c | 8 ++++---- > arch/powerpc/platforms/powernv/eeh-powernv.c | 4 ++-- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c > index 813713c9120c..2dbe1558a71f 100644 > --- a/arch/powerpc/kernel/eeh.c > +++ b/arch/powerpc/kernel/eeh.c > @@ -1628,8 +1628,8 @@ static ssize_t eeh_force_recover_write(struct file *filp, > char buf[20]; > int ret; > > - ret = simple_write_to_buffer(buf, sizeof(buf), ppos, user_buf, count); > - if (!ret) > + ret = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count); We should probably be zeroing the buffer. Reading to sizeof(buf) - 1 is done in a few places to guarantee that the string is nul terminated, but without the preceeding memset() that isn't actually guaranteed. > + if (ret <= 0) > return -EFAULT; EFAULT is supposed to be returned when the user supplies a buffer to write(2) which is outside their address space. I figured letting the sscanf() in the next step fail if the user passes writes a zero-length buffer and returning EINVAL made more sense. That said, the exact semantics around zero length writes are pretty handwavy so I guess this isn't wrong, but I don't think it's better either. > /* > @@ -1696,7 +1696,7 @@ static ssize_t eeh_dev_check_write(struct file *filp, > > memset(buf, 0, sizeof(buf)); > ret = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count); > - if (!ret) > + if (ret <= 0) > return -EFAULT; > > ret = sscanf(buf, "%x:%x:%x.%x", &domain, &bus, &dev, &fn); > @@ -1836,7 +1836,7 @@ static ssize_t eeh_dev_break_write(struct file *filp, > > memset(buf, 0, sizeof(buf)); > ret = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count); > - if (!ret) > + if (ret <= 0) > return -EFAULT; > > ret = sscanf(buf, "%x:%x:%x.%x", &domain, &bus, &dev, &fn); > diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c > index 89e22c460ebf..36ed2b8f7375 100644 > --- a/arch/powerpc/platforms/powernv/eeh-powernv.c > +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c > @@ -76,8 +76,8 @@ static ssize_t pnv_eeh_ei_write(struct file *filp, > return -ENXIO; > > /* Copy over argument buffer */ > - ret = simple_write_to_buffer(buf, sizeof(buf), ppos, user_buf, count); > - if (!ret) > + ret = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count); > + if (ret <= 0) > return -EFAULT; > > /* Retrieve parameters */ > -- > 2.30.0 >