lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Tue, 27 Nov 2012 18:02:57 +0800
From:	Qing Xu <qingx@...vell.com>
To:	Haojian Zhuang <haojian.zhuang@...il.com>
Cc:	Samuel Ortiz <sameo@...ux.intel.com>,
	Grant Likely <grant.likely@...retlab.ca>,
	Rob Herring <rob.herring@...xeda.com>,
	Chao Xie <cxie4@...vell.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"devicetree-discuss@...ts.ozlabs.org" 
	<devicetree-discuss@...ts.ozlabs.org>
Subject: Re: [PATCH 2/7] mfd: max8925: fix mfd device register failure

On 11/23/2012 04:41 PM, Haojian Zhuang wrote:
> On Tue, Nov 6, 2012 at 3:38 PM, Qing Xu <qingx@...vell.com> wrote:
>> From: Qing Xu <qingx@...vell.com>
>>
>> we encounter rtc/power/touch driver registry failure, root cause
>> it is resources confilict in insert_resouce, solved by changing
>> mfd_add_devices 5th parameter to NULL
>>
> Since resources are not used in power/rtc driver and touch driver
> isn't implemented,
> it's OK to avoid use resources. Please remove those resources in
> max8925-core.c also.
>

oh, we can not remove those resources, it is include in mfd_cell,
such as :
static struct resource rtc_resources[] = {
         {
                 ...

         },
};

static struct mfd_cell rtc_devs[] = {
         {
                 .name           = "max8925-rtc",
                 ...
                 .resources      = &rtc_resources[0],
                 ...

         },
};

In the struct, the resources is for rtc dev itself's resource, but in:

ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
                                  ARRAY_SIZE(rtc_devs),
                                 &rtc_resources[0], chip->irq_base, NULL);

the 5th parameter, it is for rtc's child, not rtc itself, we should
remove it to NULL, otherwise, device register will find conflict
on child's and parent's resource.

>> Signed-off-by: Qing Xu <qingx@...vell.com>
>> ---
>>   drivers/mfd/max8925-core.c |   22 ++++++++++------------
>>   1 files changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
>> index dcc218a..b1eacae 100644
>> --- a/drivers/mfd/max8925-core.c
>> +++ b/drivers/mfd/max8925-core.c
>> @@ -873,7 +873,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>
>>          ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
>>                                ARRAY_SIZE(rtc_devs),
>> -                             &rtc_resources[0], chip->irq_base, NULL);
>> +                             NULL, chip->irq_base, NULL);
>>          if (ret < 0) {
>>                  dev_err(chip->dev, "Failed to add rtc subdev\n");
>>                  goto out;
>> @@ -881,7 +881,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>
>>          ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0],
>>                                ARRAY_SIZE(onkey_devs),
>> -                             &onkey_resources[0], 0, NULL);
>> +                             NULL, 0, NULL);
>>          if (ret < 0) {
>>                  dev_err(chip->dev, "Failed to add onkey subdev\n");
>>                  goto out_dev;
>> @@ -900,21 +900,19 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>                  goto out_dev;
>>          }
>>
>> -       if (pdata && pdata->power) {
>> -               ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
>> -                                       ARRAY_SIZE(power_devs),
>> -                                       &power_supply_resources[0], 0, NULL);
>> -               if (ret < 0) {
>> -                       dev_err(chip->dev, "Failed to add power supply "
>> -                               "subdev\n");
>> -                       goto out_dev;
>> -               }
>> +       ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
>> +                               ARRAY_SIZE(power_devs),
>> +                               NULL, 0, NULL);
>> +       if (ret < 0) {
>> +               dev_err(chip->dev, "Failed to add power supply "
>> +                       "subdev, err = %d\n", ret);
>> +               goto out_dev;
>>          }
>>
>>          if (pdata && pdata->touch) {
>>                  ret = mfd_add_devices(chip->dev, 0, &touch_devs[0],
>>                                        ARRAY_SIZE(touch_devs),
>> -                                     &touch_resources[0], 0, NULL);
>> +                                     NULL, chip->tsc_irq_base, NULL);
>>                  if (ret < 0) {
>>                          dev_err(chip->dev, "Failed to add touch subdev\n");
>>                          goto out_dev;
>> --
>> 1.7.0.4
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ