From patchwork Mon Jul 20 15:36:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 237292 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp2095723ilg; Mon, 20 Jul 2020 08:47:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyfe831BsKerMOwUePKk/Nxhmvk3aMXjkJpxLA/vWXj9PWO+gmPhl6N/V5jVuATHXRe1HZU X-Received: by 2002:a05:6402:1ac4:: with SMTP id ba4mr21202038edb.60.1595260065308; Mon, 20 Jul 2020 08:47:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595260065; cv=none; d=google.com; s=arc-20160816; b=KN4DE65tg4mTPPQnRV71EGlGybxFZaUwWpFDcjL8yq+ODehwUlqFZNg79SScKyra2F VYlWT3Agm7zfPoR2c8jSWk1xEtxUMzxPoY5lY4SZVsdFUQGnaidpkpVF1LrYKLLw0lSm WUU2lRUrWMy58zV5NelJX0VpzhT9VgDP60ndu2KtP4hNUkI1y/JhyrSrJ3MtCTIRGdq4 ssWKtl3q2gtYv20XuSNmisPyKi2Sd/wZv+tI0+/LxQfPdc5CGf5QOCxQUVTeZV/cxffo mAy7sVqrrUkcL64SRZ7GP2nuju6BRpYElW2qFzcgwCG1pcnRtWg013Z5DuWr63nQQcCC 5kYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=eQtVbe6znlR9R7VfItITVGcijKYjgJKGnecMY/Ga6Yo=; b=vB5MpNOevgr4nxQ/5rQP9VOPTaaNTRkpwi2VRlMYAykchoXerS5GPzF6qObhaN8lzl qZkQVI2vpfxWtJzc46wS3S8SL77T6sapYmcCi+/nxyEfNapfabjQPj5M6sudJK9hECKH N/h/nqEhYS6J+PFKWCW6eNUhu3q2eG0YZ8OBk0Muc2MQTJXEbTaPH2/Wcs87p8WANYxG HuWRjwwTLHJDFacxzJn4uW88T1Pfe230qojBNA8QT20X0+8ty9LQ7w5WvnApLCs8/3wQ BIgmpDvw8I35Xa3rLyYthG7ZD9+WyRCgG9Ucny8RMlzmpqgo3dLA8lXmtzrQ4xDPqypP VSAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fyBPHYfB; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-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 a3si10839917eju.177.2020.07.20.08.47.45; Mon, 20 Jul 2020 08:47:45 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=@kernel.org header.s=default header.b=fyBPHYfB; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729387AbgGTPrm (ORCPT + 15 others); Mon, 20 Jul 2020 11:47:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:42968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730780AbgGTPrm (ORCPT ); Mon, 20 Jul 2020 11:47:42 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C3E342065E; Mon, 20 Jul 2020 15:47:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595260061; bh=CxX0AJT363wpSILQqMtjxZO6oSEWTDFfl6+P8HsqE2E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fyBPHYfB/NYnPrnRBeusP3l9AV4uPs2A+9iAa9xoUZ+rLsEe7VyIkNnyuP60RoScX XekkOhWWxnk1kHO3IeUBo6cRZV2xtdFWmMlQFeYOHvYcpSR/E3KIiW8/u95q8DLzl6 XkPcn9qtEgVMm3byGM/C/JgdU1RfP+wJbkvZ4Cg4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lars-Peter Clausen , Linus Walleij , Jonathan Cameron , Stable@vger.kernel.org Subject: [PATCH 4.14 062/125] iio:magnetometer:ak8974: Fix alignment and data leak issues Date: Mon, 20 Jul 2020 17:36:41 +0200 Message-Id: <20200720152806.033894436@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200720152802.929969555@linuxfoundation.org> References: <20200720152802.929969555@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Jonathan Cameron commit 838e00b13bfd4cac8b24df25bfc58e2eb99bcc70 upstream. One of a class of bugs pointed out by Lars in a recent review. iio_push_to_buffers_with_timestamp assumes the buffer used is aligned to the size of the timestamp (8 bytes). This is not guaranteed in this driver which uses an array of smaller elements on the stack. As Lars also noted this anti pattern can involve a leak of data to userspace and that indeed can happen here. We close both issues by moving to a suitable structure in the iio_priv() data. This data is allocated with kzalloc so no data can leak appart from previous readings. Fixes: 7c94a8b2ee8cf ("iio: magn: add a driver for AK8974") Reported-by: Lars-Peter Clausen Reviewed-by: Linus Walleij Signed-off-by: Jonathan Cameron Cc: Signed-off-by: Greg Kroah-Hartman --- drivers/iio/magnetometer/ak8974.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) --- a/drivers/iio/magnetometer/ak8974.c +++ b/drivers/iio/magnetometer/ak8974.c @@ -184,6 +184,11 @@ struct ak8974 { bool drdy_irq; struct completion drdy_complete; bool drdy_active_low; + /* Ensure timestamp is naturally aligned */ + struct { + __le16 channels[3]; + s64 ts __aligned(8); + } scan; }; static const char ak8974_reg_avdd[] = "avdd"; @@ -580,7 +585,6 @@ static void ak8974_fill_buffer(struct ii { struct ak8974 *ak8974 = iio_priv(indio_dev); int ret; - __le16 hw_values[8]; /* Three axes + 64bit padding */ pm_runtime_get_sync(&ak8974->i2c->dev); mutex_lock(&ak8974->lock); @@ -590,13 +594,13 @@ static void ak8974_fill_buffer(struct ii dev_err(&ak8974->i2c->dev, "error triggering measure\n"); goto out_unlock; } - ret = ak8974_getresult(ak8974, hw_values); + ret = ak8974_getresult(ak8974, ak8974->scan.channels); if (ret) { dev_err(&ak8974->i2c->dev, "error getting measures\n"); goto out_unlock; } - iio_push_to_buffers_with_timestamp(indio_dev, hw_values, + iio_push_to_buffers_with_timestamp(indio_dev, &ak8974->scan, iio_get_time_ns(indio_dev)); out_unlock: