From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755323AbbG0Xqc (ORCPT ); Mon, 27 Jul 2015 19:46:32 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:12169 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754891AbbG0Xqa (ORCPT ); Mon, 27 Jul 2015 19:46:30 -0400 X-AuditID: cbfec7f5-f794b6d000001495-04-55b6c2d2b351 Message-id: <55B6C2D0.1050101@samsung.com> Date: Tue, 28 Jul 2015 08:46:24 +0900 From: Krzysztof Kozlowski User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-version: 1.0 To: "H.J. Lu" , LKML Cc: Jiri Kosina , linux-input@vger.kernel.org, Sebastian Reichel , "linux-pm@vger.kernel.org" Subject: Re: Bad change in commit 297d716f6260cc9421d971b124ca196b957ee458? References: In-reply-to: Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsVy+t/xK7qXDm0LNbhxycpi+7rDzBZN2xYz Wrx+YWhx89M3VovLu+awWXzuPcJocXp3iQO7x85Zd9k9Nq3qZPPo27KK0WP9lqssHp83yQWw RnHZpKTmZJalFunbJXBlrG8WLXjKWbH+xHbGBsYd7F2MHBwSAiYSZ9cEdzFyApliEhfurWfr YuTiEBJYyihxafl7ZgjnC6PEgulXmUCqeAW0JK5uPcEMYrMIqEqc+DKNDcRmEzCW2Lx8CZgt KhAhsXz1SUaIekGJH5PvsYDYIgIeEhcfr2cFGcosMI9R4u+1a6wgCWEBb4me/U3sILaQQIDE zIYPYA2cAsESU78dZQS5lFlAXWLKlFyQMLOAvMTmNW+ZJzAKzEKyYhZC1SwkVQsYmVcxiqaW JhcUJ6XnGukVJ+YWl+al6yXn525ihAT31x2MS49ZHWIU4GBU4uF9sWFbqBBrYllxZe4hRgkO ZiURXsYKoBBvSmJlVWpRfnxRaU5q8SFGaQ4WJXHembvehwgJpCeWpGanphakFsFkmTg4pRoY s0q2cmQk71xjOf95qMqzBZwcUZ7xomuEOj/PvPMo503skdrI64WMvqL3q7VK9jWvigrLvMZg JeMw92rxvRtiS+cc351kb+a/qIh1zXbJ6rQiNwb+ZQvn+FuXKxS+6FvDL/VT6vgGrkke/7Yf 6V/tr3B/8duEKfrbMkymn2+9seSsUf5p7dUWSizFGYmGWsxFxYkA6DEbtmoCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27.07.2015 22:10, H.J. Lu wrote: > Hi, > > This commit: > > commit 297d716f6260cc9421d971b124ca196b957ee458 > Author: Krzysztof Kozlowski > Date: Thu Mar 12 08:44:11 2015 +0100 > > power_supply: Change ownership from driver to core > > Change the ownership of power_supply structure from each driver > implementing the class to the power supply core. > > has > > static void hidinput_cleanup_battery(struct hid_device *dev) > { > - if (!dev->battery.name) > + if (!dev->battery) > return; > > - power_supply_unregister(&dev->battery); > - kfree(dev->battery.name); > - dev->battery.name = NULL; > + power_supply_unregister(dev->battery); > + kfree(dev->battery->desc->name); > + kfree(dev->battery->desc); > + dev->battery = NULL; > } > > Is this OK to access dev->battery after calling power_supply_unregister? (+Cc Jiri, linux-input, linux-pm, Sebastian) Good catch, it is not safe. The final device_unregister() will free the structure. We should access directly psy_desc here. I'll sent a proposal of fixing this and check other drivers for this pattern. Best regards, Krzysztof