Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1772829rwi; Thu, 13 Oct 2022 20:00:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5DXaqd0hp6W/ticIitRWNv1387fgPo+QlVh86g3rroFaKaDeDRtkIQTzaxZW71EqtTMjT/ X-Received: by 2002:a05:6402:3512:b0:45d:1d86:9ed7 with SMTP id b18-20020a056402351200b0045d1d869ed7mr974476edd.226.1665716436841; Thu, 13 Oct 2022 20:00:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665716436; cv=none; d=google.com; s=arc-20160816; b=Je2SG6Btm3oO7+fkKk0XPTy4he2IuwPQ0cD75JpIyT8A+L31JTgqvUe3jT+Do2Npr4 XchRzj3Yz5vJmev57jlWUR1CnaurdkGXKwxa+SI1Zvoc420Rp4aaj4CQu428tZWYOFSt NEgTfFONhEnj0hf+QRug0kKP71OSNDsaiJ8sVGTVP04e+qGz4vtZlXgjM3Xh/rqPBLl/ dRgL6WF7aQg/5ZuZC+mm3SNZuZBavm2ZZ+lzBDyhqs+4ffIRRG5pX4SYGYHGQo1nU9G9 fcsqSWDrvZ5D8A1sSZIEicJZkl0xmy84LxKjMADGcC/b4L0Dmp1KeLGF57iI0rgEqZfE 0XwQ== 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=2mE/Zv8UshIe3GbP/PI2XX1JuyMbptXgkjRqiEyOWX8=; b=FqE+vKzH66h06IU7PgxM7Vtdw6KDGQfvJj9IZapfCa79LA+gDWbtmKqtiFOfQM2dvy Kim9rH/eZTsDhcPioHJqpfhmmRQSU1LuA9RlOubp5i9poAxhm1cRKormaBbbgmPqOpB7 jExwiMQThdRaRjlZeXBrXBmQj2NbMh69dESONrtYtfjlRdum8nrI2tzrQgRuhtX/uH75 +0ZQPtk6ZdYs//N6ocysN9IjEakzHPegUBLDo9NXssnG98IbqSQVeyDBA+CbU5QSfhcI WVYyFz6Za5qob6VVKKDme+Jkhv7//8CuIDwTyy0sQc3KdRvLfmMyVojKa6poupOPQLXO uzbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gMRXodoI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hk6-20020a170906c9c600b0077497671e2asi1221033ejb.406.2022.10.13.20.00.11; Thu, 13 Oct 2022 20:00:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gMRXodoI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229595AbiJNB4z (ORCPT + 99 others); Thu, 13 Oct 2022 21:56:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229491AbiJNB4y (ORCPT ); Thu, 13 Oct 2022 21:56:54 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0BA4181C93 for ; Thu, 13 Oct 2022 18:56:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 15BF6B821B6 for ; Fri, 14 Oct 2022 01:56:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D202EC433B5 for ; Fri, 14 Oct 2022 01:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1665712610; bh=XvsGt36lXf/4iPSbAVQsh1wTJCHrHfmS0W8+B95Kokw=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=gMRXodoIgDQum8JJvfFjdHFLLjvTimii52+aOuHirbjOhpPlrRT9aGLIUQrm4yZal dP3rvlIfnGbZ4GMJMUvDcEIP+v6XoS8jWtY8wh6satpGfv4CO9fCsnohsts6yB8s1U b2AZizX1xdUyC3inV7yKg/wQ2LfXLcBs1rNnBjMCBs9r36K4LV2PTPZ4SxVrM/x4xi VrYgUbEsB0oCC3HbnFISs12qut51Hdb1uRuvQoQX5+Z2yQ29XUYuV9Fdsxb+9+yQGp FoaiZQzns9fyfSzU9ttNBZkQOSVzV0yuEVctNLhQZQH/uCWTPlPvuPaoVOLzOb5Lbj ytETJ9mL87RtA== Received: by mail-ed1-f42.google.com with SMTP id g27so4961456edf.11 for ; Thu, 13 Oct 2022 18:56:50 -0700 (PDT) X-Gm-Message-State: ACrzQf1KPYgnBlkiUZszMrZrMJV3eWDVgFsYoNApaRAgAoK3z3OouEF3 6CwqARPBnU0MtYFQFMcozgBWhWOu19yEbgtFO3M= X-Received: by 2002:aa7:df16:0:b0:45b:f51f:ab73 with SMTP id c22-20020aa7df16000000b0045bf51fab73mr2191385edy.366.1665712609049; Thu, 13 Oct 2022 18:56:49 -0700 (PDT) MIME-Version: 1.0 References: <20221014015212.1150629-1-yangyingliang@huawei.com> In-Reply-To: <20221014015212.1150629-1-yangyingliang@huawei.com> From: Huacai Chen Date: Fri, 14 Oct 2022 09:56:34 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] platform/loongarch: laptop: fix possible UAF and simplify return in generic_acpi_laptop_init() To: Yang Yingliang Cc: linux-kernel@vger.kernel.org, lvjianmin@loongson.cn, chenhuacai@loongson.cn Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Queued for loongarch-fixes, thanks. Huacai On Fri, Oct 14, 2022 at 9:52 AM Yang Yingliang wrote: > > Current the return value of 'sub_driver->init' is not checked, > if sparse_keymap_setup() called in the init function fails, > 'generic_inputdev' is freed, then it willl lead a UAF when > using it in generic_acpi_laptop_init(). Fix it by checking > return value. Set generic_inputdev to NULL after free to avoid > double free it. > > The error code in generic_subdriver_init() is always negative, > the return of generic_subdriver_init() can be simplified. > > Fixes: 6246ed09111f ("LoongArch: Add ACPI-based generic laptop driver") > Signed-off-by: Yang Yingliang > --- > drivers/platform/loongarch/loongson-laptop.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c > index f0166ad5d2c2..572290abf151 100644 > --- a/drivers/platform/loongarch/loongson-laptop.c > +++ b/drivers/platform/loongarch/loongson-laptop.c > @@ -448,6 +448,7 @@ static int __init event_init(struct generic_sub_driver *sub_driver) > if (ret < 0) { > pr_err("Failed to setup input device keymap\n"); > input_free_device(generic_inputdev); > + generic_inputdev = NULL; > > return ret; > } > @@ -502,8 +503,11 @@ static int __init generic_subdriver_init(struct generic_sub_driver *sub_driver) > if (ret) > return -EINVAL; > > - if (sub_driver->init) > - sub_driver->init(sub_driver); > + if (sub_driver->init) { > + ret = sub_driver->init(sub_driver); > + if (ret) > + goto err_out; > + } > > if (sub_driver->notify) { > ret = setup_acpi_notify(sub_driver); > @@ -519,7 +523,7 @@ static int __init generic_subdriver_init(struct generic_sub_driver *sub_driver) > > err_out: > generic_subdriver_exit(sub_driver); > - return (ret < 0) ? ret : 0; > + return ret; > } > > static void generic_subdriver_exit(struct generic_sub_driver *sub_driver) > -- > 2.25.1 >