From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751374AbcGNIMl (ORCPT ); Thu, 14 Jul 2016 04:12:41 -0400 Received: from esa8.dell-outbound.iphmx.com ([68.232.149.218]:5404 "EHLO esa8.dell-outbound.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751345AbcGNIMd (ORCPT ); Thu, 14 Jul 2016 04:12:33 -0400 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=CCP78nbu5kbl6AGPj6fW416MVp+l8KcDR35aUklWuIBAvQ8XKmqUpbHk cZMDh/9Pl86eTNud0ve3VZ2WwebPT14ftNIGIFet/Stvq44/NyUKIkmbW P0Ya9OxXOn5pXOmPcm1yIZRixmfTqlsZtnWqvaLboMBxkcMZhlVyoPA4D M=; X-LoopCount0: from 10.106.62.236 X-IronPort-AV: E=Sophos;i="5.28,361,1464670800"; d="scan'208";a="346146621" 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: Thu, 14 Jul 2016 16:01:22 +0800 Message-Id: <1468483283-84766-2-git-send-email-allen_hung@dell.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1468483283-84766-1-git-send-email-allen_hung@dell.com> References: <1468483283-84766-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