From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751417AbdENILa (ORCPT ); Sun, 14 May 2017 04:11:30 -0400 Received: from mout.web.de ([212.227.15.3]:53017 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750882AbdENIL0 (ORCPT ); Sun, 14 May 2017 04:11:26 -0400 Subject: Re: [PATCH 2/8] gpio: exar: Fix passing in of parent PCI device To: Andy Shevchenko , Jan Kiszka Cc: Greg Kroah-Hartman , Linus Walleij , Alexandre Courbot , Linux Kernel Mailing List , "linux-serial@vger.kernel.org" , "linux-gpio@vger.kernel.org" , Sudip Mukherjee , Sascha Weisenberger References: <20f1d241d134f9f4932a26e4bd873ffc250affce.1494660546.git.jan.kiszka@siemens.com> From: Jan Kiszka Message-ID: <4a38292e-3340-dfb4-8a61-114fccf42958@web.de> Date: Sun, 14 May 2017 10:11:13 +0200 User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="gSeuwje7c53Xq1wE51RGMWX7vvfCnEdFV" X-Provags-ID: V03:K0:SyAtuQa+v9Vh5GJZSSAE9M8uipHfNZf97RRBKndoac7OLw0k2Fp stHknA6HQnimAzgsvQGdy0K0vF91v6KLxhGktuRLF056R1JsjKbL9YGwlSExKA6OrsR3wJ/ P39737pVY5RE1Ktpz3W+KvimOnTlFIQp63UV5tRiZhqQ9tBApQ+gANZjSZG+jaGDvLMsPbQ VWosdPX2tIT/xSar8hhTA== X-UI-Out-Filterresults: notjunk:1;V01:K0:iL3uncVwqz8=:raFS97hTacihy6EBxI7d4B 8Xtmeqn0+Qru7WoOYv5HEIJ0BipUQkJXZTowziEGJ4kqitTiVk9/zL8P5YD03dxlFwW0iB+qE p/lF0KXgR+hR/o+PN7fd1iO4JbChBVFpzVdBSFvYDvG2zd4Y43ddhaJKixU2WTNOt0kkmY9ul msZmVkM2SE9r1pi75/fGSZ2lPoS+nJTXEQeLvI133z3EzDnT82aMKSfcBhvRACgV2mWhl8oBD SBFPe+q6NfWofKbbSPDVIfiyLBb9AFioan/l+zW+FrDgJ4eOWOwR34Fn3cjnxxpb2LLQnssZE mChGwZc7IExpYO1iDne7fwD3Ia8t7jIkeyIu7mt/eaZgq1mQEQHUVSw0h6xkmZYNFvPyec06B eV5kXjJzds/i0Xexn8L7wqJyx/+aCOXkViNSdqZKshxjd8ydmmzD1/uad5JpydkswLQYvIrSp GfwwL8LFfWeos6Nfbh3GzjOX5pk6qtNGHVpEtQsJqt0nh68PjG7oereP00PJuqf3rlhzrZJXl WeIOtDBpLODQmzHmmx+Lwwq3mE3FZONCk9Bkdw6XCTKZ95hIecsM4m7x5hJmvsg4MchnUfgSt Dwoe/GZgXl2gfYQvIlBeQQVhAIgsAcN5+BtSKL9Mk38DZCgeZa2sgp7flu1sNQyWZAQT4sGcg F37lcCsn6xBo0PHGA/xH+h/4hGMBU3GLwaLG5yGPgi1D/td+Ckskrkny3sVcvxZejDvHKvckp LFsK2eVNbR2tFhE7SR1397xjOVSIouxgKWKvweatBp/8lFiBOJSKiGzhww8= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --gSeuwje7c53Xq1wE51RGMWX7vvfCnEdFV Content-Type: multipart/mixed; boundary="SXB1sGjAtKpwFloFfmeGcV875JNBWKWtj"; protected-headers="v1" From: Jan Kiszka To: Andy Shevchenko , Jan Kiszka Cc: Greg Kroah-Hartman , Linus Walleij , Alexandre Courbot , Linux Kernel Mailing List , "linux-serial@vger.kernel.org" , "linux-gpio@vger.kernel.org" , Sudip Mukherjee , Sascha Weisenberger Message-ID: <4a38292e-3340-dfb4-8a61-114fccf42958@web.de> Subject: Re: [PATCH 2/8] gpio: exar: Fix passing in of parent PCI device References: <20f1d241d134f9f4932a26e4bd873ffc250affce.1494660546.git.jan.kiszka@siemens.com> In-Reply-To: --SXB1sGjAtKpwFloFfmeGcV875JNBWKWtj Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 2017-05-13 15:25, Andy Shevchenko wrote: > On Sat, May 13, 2017 at 10:29 AM, Jan Kiszka w= rote: >> This fixes reloading of the driver for the same device: First of all, >> the driver sets drvdata to its own value during probing and does not >> restore the original value on exit. But this won't help anyway as the >> core clears drvdata after the driver left. >> >> Use stable platform_data instead. >=20 >>>From the above I didn't clearly get what device you are talking about. > GPIO? "This fixes reloading of the GPIO driver for the same platform device instance as created by the exar UART driver: [...]" Clearer? >=20 > Can you provide step by step what you did and what bug you got? Obviously a NULL pointer: Just rmmod gpio-exar and reload it while there is the same platform device present. >=20 > Regarding below it looks to me a bit hackish. The alternative is a classic platform data structure, then also carrying the properties of patch 7 - which are, BTW, not DT-related, thus shall not form an external interface. Probably another reason to switch everything to some struct exar_gpio_platform_data. Jan >=20 >> static int gpio_exar_probe(struct platform_device *pdev) >> { >> - struct pci_dev *pcidev =3D platform_get_drvdata(pdev); >> + struct pci_dev *pcidev =3D *(struct pci_dev **)pdev->dev.platf= orm_data; >> struct exar_gpio_chip *exar_gpio; >> void __iomem *p; >> int index, ret; >> diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/= 8250/8250_exar.c >> index b4fa585156c7..2d056d1eeca3 100644 >> --- a/drivers/tty/serial/8250/8250_exar.c >> +++ b/drivers/tty/serial/8250/8250_exar.c >> @@ -196,8 +196,12 @@ xr17v35x_register_gpio(struct pci_dev *pcidev) >> if (!pdev) >> return NULL; >> >> - platform_set_drvdata(pdev, pcidev); >> - if (platform_device_add(pdev) < 0) { >> + /* >> + * platform_device_add_data kmemdups the data, therefore we ca= n safely >> + * pass a stack reference. >> + */ >> + if (platform_device_add_data(pdev, &pcidev, sizeof(pcidev)) < = 0 || >> + platform_device_add(pdev) < 0) { >> platform_device_put(pdev); >> return NULL; >=20 --SXB1sGjAtKpwFloFfmeGcV875JNBWKWtj-- --gSeuwje7c53Xq1wE51RGMWX7vvfCnEdFV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAlkYEScACgkQitSsb3rl5xTsxQCfWbk+didwvuQC+6zRp8P2bGM6 DrgAoOXvJrYFN/UoCcK61vFtEIq9RQBV =pCkE -----END PGP SIGNATURE----- --gSeuwje7c53Xq1wE51RGMWX7vvfCnEdFV--