Re: [RFC]iio:industrialio-event fix error-handling in iio_device_add_event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonathan Cameron schrieb:
> On 29/12/13 11:54, Hartmut Knaack wrote:
>> __iio_add_chan_devattr returns -EBUSY, when registering the event-interface of
>> ad799x, but iio_device_add_event does not catch it. So, handle it like in
>> iio_device_add_info_mask_type. Not sure, if this is the right solution, but it
>> makes the ad799x (and possibly others as well) usable.
>>
>> Signed-off-by: Hartmut Knaack <knaack.h@xxxxxx>
> I think the fix is correct, but I'm not entirely sure what is triggering 
> the bug in this particular driver. All of the elements of ad799x_events 
> are in mask separate so shared_by should be IIO_SEPARATE for all calls 
> to this function.
>
> Lars, any idea's on what Hartmut is hitting?
> Also, is the below patch as valid as it appears at first glance?
I've been digging a bit more into the event interface registration, and it turned out that the problem is a typo in the ad799x driver. A patch is on the way.
While debugging, I always encountered crashes of my machine, about 15 seconds after the device-initialization failed. You can find a short video of the screen capture at [1]. This was taken on a Linux 3.13.1 (with slight changes to ad799x_core.c for working without platform_data and fix the irq-issue). Any ideas, where to start looking for that problems?
Besides, I'm a bit confused with all the branches of the iio.git repo. Which one shall be used, when developing for the iio subsystem (that contains all the patches you accepted)?

[1] http://www.upitus.net/36zhlrijl9lh
>> ---
>> diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
>> index c10eab6..d37a907 100644
>> --- a/drivers/iio/industrialio-event.c
>> +++ b/drivers/iio/industrialio-event.c
>> @@ -362,7 +362,9 @@ static int iio_device_add_event(struct iio_dev *indio_dev,
>>   			&indio_dev->event_interface->dev_attr_list);
>>   		kfree(postfix);
>>
>> -		if (ret)
>> +		if ((ret == -EBUSY) && (shared_by != IIO_SEPARATE))
>> +			continue;
>> +		else if (ret < 0)
>>   			return ret;
>>
>>   		attrcount++;
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux