From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932348AbcGOJv5 (ORCPT ); Fri, 15 Jul 2016 05:51:57 -0400 Received: from esa3.dell-outbound.iphmx.com ([68.232.153.94]:20296 "EHLO esa3.dell-outbound.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751033AbcGOJvx (ORCPT ); Fri, 15 Jul 2016 05:51:53 -0400 X-Greylist: delayed 559 seconds by postgrey-1.27 at vger.kernel.org; Fri, 15 Jul 2016 05:51:53 EDT DomainKey-Signature: s=smtpout; d=dell.com; c=simple; q=dns; h=Received:X-LoopCount0:X-IronPort-AV:From:To:Cc:Subject: Date:Message-Id:X-Mailer:In-Reply-To:References; b=gCx7OOj4xIy2fgHRhJcUapT3O78LngDP2VrH8STmXVKFvetynnrXuBwG hGdSeVE26cpmlxamkf0eDLWOJKx74RLq0XzsxaAyPgPYPtkGybqNPOYpS sU5U66fmvEoD/BCs43+XQkcVC44uQmG0bI+YkMZnRV9bpg4c1Z4kkwHGw s=; X-LoopCount0: from 10.106.62.94 X-IronPort-AV: E=Sophos;i="5.28,367,1464670800"; d="scan'208";a="856449280" From: Allen Hung To: Jean Delvare , linux-kernel@vger.kernel.org Cc: Mario Limonciello , Allen Hung Subject: [PATCH 1/2] dmi-id: don't free dev structure after calling device_register Date: Fri, 15 Jul 2016 17:42:22 +0800 Message-Id: <1468575743-26670-2-git-send-email-allen_hung@dell.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1468575743-26670-1-git-send-email-allen_hung@dell.com> References: <1468575743-26670-1-git-send-email-allen_hung@dell.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org dmi_dev is freed in error exit code but, according to the document of device_register, it should never directly free device structure after calling this function, even if it returned an error! Use put_device() instead. Signed-off-by: Allen Hung --- drivers/firmware/dmi-id.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c index 94a58a0..44c0139 100644 --- a/drivers/firmware/dmi-id.c +++ b/drivers/firmware/dmi-id.c @@ -229,14 +229,14 @@ static int __init dmi_id_init(void) ret = device_register(dmi_dev); if (ret) - goto fail_free_dmi_dev; + goto fail_put_dmi_dev; return 0; -fail_free_dmi_dev: - kfree(dmi_dev); -fail_class_unregister: +fail_put_dmi_dev: + put_device(dmi_dev); +fail_class_unregister: class_unregister(&dmi_class); return ret; -- 2.7.4