* [Xenomai-core] Racy pse51_mutex_check_init?
@ 2008-08-23 8:33 Jan Kiszka
2008-08-23 10:21 ` Gilles Chanteperdrix
2008-08-23 10:43 ` Gilles Chanteperdrix
0 siblings, 2 replies; 16+ messages in thread
From: Jan Kiszka @ 2008-08-23 8:33 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
[-- Attachment #1: Type: text/plain, Size: 621 bytes --]
Hi Gilles,
trying to understand the cb_read/write lock usage, some question came up
here: What prevents that the mutexq iteration in pse51_mutex_check_init
races against pse51_mutex_destroy_internal?
If nothing, then I wonder if we actually have to iterate over the whole
queue to find out whether a given object has been initialized and
registered already or not. Can't this be encoded differently?
BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
memory region? Why not using a handle here, like the native skin does?
Won't that allow to resolve the issue above as well?
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 8:33 [Xenomai-core] Racy pse51_mutex_check_init? Jan Kiszka
@ 2008-08-23 10:21 ` Gilles Chanteperdrix
2008-08-23 10:34 ` Gilles Chanteperdrix
2008-08-23 10:53 ` Philippe Gerum
2008-08-23 10:43 ` Gilles Chanteperdrix
1 sibling, 2 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 10:21 UTC (permalink / raw)
To: Xenomai-core
Hi Jan,
Please do not use my address at gmail, gna does not want me to post from
this address:
2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
s in a black list at dsn.rfc-ignorant.org
so, here is a repost of my answer:
Jan Kiszka wrote:
> > Hi Gilles,
> >
> > trying to understand the cb_read/write lock usage, some question came up
> > here: What prevents that the mutexq iteration in pse51_mutex_check_init
> > races against pse51_mutex_destroy_internal?
Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
is to catch most of invalid usages, it seems we can not catch them all.
> >
> > If nothing, then I wonder if we actually have to iterate over the whole
> > queue to find out whether a given object has been initialized and
> > registered already or not. Can't this be encoded differently?
> >
> > BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
> > memory region? Why not using a handle here, like the native skin does?
> > Won't that allow to resolve the issue above as well?
This has been so from the beginning, and I did not change it.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:21 ` Gilles Chanteperdrix
@ 2008-08-23 10:34 ` Gilles Chanteperdrix
2008-08-23 10:53 ` Philippe Gerum
1 sibling, 0 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 10:34 UTC (permalink / raw)
To: Xenomai-core
Gilles Chanteperdrix wrote:
> Hi Jan,
>
> Please do not use my address at gmail, gna does not want me to post from
> this address:
>
> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
> s in a black list at dsn.rfc-ignorant.org
>
> so, here is a repost of my answer:
>
> Jan Kiszka wrote:
>>> Hi Gilles,
>>>
>>> trying to understand the cb_read/write lock usage, some question came up
>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>> races against pse51_mutex_destroy_internal?
>
> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
> is to catch most of invalid usages, it seems we can not catch them all.
No, it works, because pthread_mutex_destroy will not be able to get the
write lock is the lock is read-locked.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 8:33 [Xenomai-core] Racy pse51_mutex_check_init? Jan Kiszka
2008-08-23 10:21 ` Gilles Chanteperdrix
@ 2008-08-23 10:43 ` Gilles Chanteperdrix
2008-08-23 10:51 ` Jan Kiszka
1 sibling, 1 reply; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 10:43 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai-core
Jan Kiszka wrote:
> Hi Gilles,
>
> trying to understand the cb_read/write lock usage, some question came up
> here: What prevents that the mutexq iteration in pse51_mutex_check_init
> races against pse51_mutex_destroy_internal?
>
> If nothing, then I wonder if we actually have to iterate over the whole
> queue to find out whether a given object has been initialized and
> registered already or not. Can't this be encoded differently?
We actually iterate over the queue only if the magic happens to be
correct, which is not the common case.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:43 ` Gilles Chanteperdrix
@ 2008-08-23 10:51 ` Jan Kiszka
2008-08-23 10:58 ` Gilles Chanteperdrix
0 siblings, 1 reply; 16+ messages in thread
From: Jan Kiszka @ 2008-08-23 10:51 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
[-- Attachment #1: Type: text/plain, Size: 830 bytes --]
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Hi Gilles,
>>
>> trying to understand the cb_read/write lock usage, some question came up
>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>> races against pse51_mutex_destroy_internal?
>>
>> If nothing, then I wonder if we actually have to iterate over the whole
>> queue to find out whether a given object has been initialized and
>> registered already or not. Can't this be encoded differently?
>
> We actually iterate over the queue only if the magic happens to be
> correct, which is not the common case.
However, there remains a race window with other threads removing other
mutex objects in parallel, changing the queue - risking a kernel oops.
And that is what worries me. It's unlikely. but possible. It's unclean.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:21 ` Gilles Chanteperdrix
2008-08-23 10:34 ` Gilles Chanteperdrix
@ 2008-08-23 10:53 ` Philippe Gerum
2008-08-23 11:07 ` Gilles Chanteperdrix
1 sibling, 1 reply; 16+ messages in thread
From: Philippe Gerum @ 2008-08-23 10:53 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
Gilles Chanteperdrix wrote:
> Hi Jan,
>
> Please do not use my address at gmail, gna does not want me to post from
> this address:
>
> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
> s in a black list at dsn.rfc-ignorant.org
>
> so, here is a repost of my answer:
>
> Jan Kiszka wrote:
>>> Hi Gilles,
>>>
>>> trying to understand the cb_read/write lock usage, some question came up
>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>> races against pse51_mutex_destroy_internal?
>
> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
> is to catch most of invalid usages, it seems we can not catch them all.
>
>>> If nothing, then I wonder if we actually have to iterate over the whole
>>> queue to find out whether a given object has been initialized and
>>> registered already or not. Can't this be encoded differently?
>>>
>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>> memory region? Why not using a handle here, like the native skin does?
>>> Won't that allow to resolve the issue above as well?
>
> This has been so from the beginning, and I did not change it.
>
To get registry handles, you first need to register objects. The POSIX skin
still does not use the built-in registry, that's why.
--
Philippe.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:51 ` Jan Kiszka
@ 2008-08-23 10:58 ` Gilles Chanteperdrix
2008-08-23 11:02 ` Gilles Chanteperdrix
0 siblings, 1 reply; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 10:58 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai-core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Hi Gilles,
>>>
>>> trying to understand the cb_read/write lock usage, some question came up
>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>> races against pse51_mutex_destroy_internal?
>>>
>>> If nothing, then I wonder if we actually have to iterate over the whole
>>> queue to find out whether a given object has been initialized and
>>> registered already or not. Can't this be encoded differently?
>> We actually iterate over the queue only if the magic happens to be
>> correct, which is not the common case.
>
> However, there remains a race window with other threads removing other
> mutex objects in parallel, changing the queue - risking a kernel oops.
> And that is what worries me. It's unlikely. but possible. It's unclean.
Ok. This used to be protected by the nklock. We should add the nklock again.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:58 ` Gilles Chanteperdrix
@ 2008-08-23 11:02 ` Gilles Chanteperdrix
2008-08-23 11:06 ` Jan Kiszka
0 siblings, 1 reply; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 11:02 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai-core
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Hi Gilles,
>>>>
>>>> trying to understand the cb_read/write lock usage, some question came up
>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>> races against pse51_mutex_destroy_internal?
>>>>
>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>> queue to find out whether a given object has been initialized and
>>>> registered already or not. Can't this be encoded differently?
>>> We actually iterate over the queue only if the magic happens to be
>>> correct, which is not the common case.
>> However, there remains a race window with other threads removing other
>> mutex objects in parallel, changing the queue - risking a kernel oops.
>> And that is what worries me. It's unlikely. but possible. It's unclean.
>
> Ok. This used to be protected by the nklock. We should add the nklock again.
Well I do not think that anyone is rescheduling, so we could probably
replace the nklock with a per-kqueue xnlock.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:02 ` Gilles Chanteperdrix
@ 2008-08-23 11:06 ` Jan Kiszka
2008-08-23 11:24 ` Gilles Chanteperdrix
0 siblings, 1 reply; 16+ messages in thread
From: Jan Kiszka @ 2008-08-23 11:06 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
[-- Attachment #1: Type: text/plain, Size: 1344 bytes --]
Gilles Chanteperdrix wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Jan Kiszka wrote:
>>>>> Hi Gilles,
>>>>>
>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>> races against pse51_mutex_destroy_internal?
>>>>>
>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>> queue to find out whether a given object has been initialized and
>>>>> registered already or not. Can't this be encoded differently?
>>>> We actually iterate over the queue only if the magic happens to be
>>>> correct, which is not the common case.
>>> However, there remains a race window with other threads removing other
>>> mutex objects in parallel, changing the queue - risking a kernel oops.
>>> And that is what worries me. It's unlikely. but possible. It's unclean.
>> Ok. This used to be protected by the nklock. We should add the nklock again.
>
> Well I do not think that anyone is rescheduling, so we could probably
> replace the nklock with a per-kqueue xnlock.
If nklock or per queue - both will introduce O(n) at least local
preemption blocking. That's why I was asking for an alternative
algorithm than iterating over the whole list.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 10:53 ` Philippe Gerum
@ 2008-08-23 11:07 ` Gilles Chanteperdrix
2008-08-23 11:13 ` Philippe Gerum
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 11:07 UTC (permalink / raw)
To: rpm; +Cc: Xenomai-core
Philippe Gerum wrote:
> Gilles Chanteperdrix wrote:
>> Hi Jan,
>>
>> Please do not use my address at gmail, gna does not want me to post from
>> this address:
>>
>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>> s in a black list at dsn.rfc-ignorant.org
>>
>> so, here is a repost of my answer:
>>
>> Jan Kiszka wrote:
>>>> Hi Gilles,
>>>>
>>>> trying to understand the cb_read/write lock usage, some question came up
>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>> races against pse51_mutex_destroy_internal?
>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>> is to catch most of invalid usages, it seems we can not catch them all.
>>
>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>> queue to find out whether a given object has been initialized and
>>>> registered already or not. Can't this be encoded differently?
>>>>
>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>> memory region? Why not using a handle here, like the native skin does?
>>>> Won't that allow to resolve the issue above as well?
>> This has been so from the beginning, and I did not change it.
>>
>
> To get registry handles, you first need to register objects. The POSIX skin
> still does not use the built-in registry, that's why.
Well the registry is about associating objects with their name, and
since most posix skin objects have no name, I did not see the point of
using the registry. And for the named objects, the nucleus registry was
not compatible with the posix skin requirements, which is why I did not
use it...
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:07 ` Gilles Chanteperdrix
@ 2008-08-23 11:13 ` Philippe Gerum
2008-08-23 11:16 ` Philippe Gerum
2008-08-23 11:31 ` Jan Kiszka
2 siblings, 0 replies; 16+ messages in thread
From: Philippe Gerum @ 2008-08-23 11:13 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
>> Gilles Chanteperdrix wrote:
>>> Hi Jan,
>>>
>>> Please do not use my address at gmail, gna does not want me to post from
>>> this address:
>>>
>>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>>> s in a black list at dsn.rfc-ignorant.org
>>>
>>> so, here is a repost of my answer:
>>>
>>> Jan Kiszka wrote:
>>>>> Hi Gilles,
>>>>>
>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>> races against pse51_mutex_destroy_internal?
>>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>>> is to catch most of invalid usages, it seems we can not catch them all.
>>>
>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>> queue to find out whether a given object has been initialized and
>>>>> registered already or not. Can't this be encoded differently?
>>>>>
>>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>>> memory region? Why not using a handle here, like the native skin does?
>>>>> Won't that allow to resolve the issue above as well?
>>> This has been so from the beginning, and I did not change it.
>>>
>> To get registry handles, you first need to register objects. The POSIX skin
>> still does not use the built-in registry, that's why.
>
> Well the registry is about associating objects with their name, and
> since most posix skin objects have no name, I did not see the point of
> using the registry. And for the named objects, the nucleus registry was
> not compatible with the posix skin requirements, which is why I did not
> use it...
>
I understand that, but names could be generated internally from the object
address, or the registry updated to allow hashing bit patterns as well.
--
Philippe.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:07 ` Gilles Chanteperdrix
2008-08-23 11:13 ` Philippe Gerum
@ 2008-08-23 11:16 ` Philippe Gerum
2008-08-23 11:31 ` Gilles Chanteperdrix
2008-08-23 11:31 ` Jan Kiszka
2 siblings, 1 reply; 16+ messages in thread
From: Philippe Gerum @ 2008-08-23 11:16 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
>> Gilles Chanteperdrix wrote:
>>> Hi Jan,
>>>
>>> Please do not use my address at gmail, gna does not want me to post from
>>> this address:
>>>
>>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>>> s in a black list at dsn.rfc-ignorant.org
>>>
>>> so, here is a repost of my answer:
>>>
>>> Jan Kiszka wrote:
>>>>> Hi Gilles,
>>>>>
>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>> races against pse51_mutex_destroy_internal?
>>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>>> is to catch most of invalid usages, it seems we can not catch them all.
>>>
>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>> queue to find out whether a given object has been initialized and
>>>>> registered already or not. Can't this be encoded differently?
>>>>>
>>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>>> memory region? Why not using a handle here, like the native skin does?
>>>>> Won't that allow to resolve the issue above as well?
>>> This has been so from the beginning, and I did not change it.
>>>
>> To get registry handles, you first need to register objects. The POSIX skin
>> still does not use the built-in registry, that's why.
>
> Well the registry is about associating objects with their name, and
> since most posix skin objects have no name, I did not see the point of
> using the registry. And for the named objects, the nucleus registry was
> not compatible with the posix skin requirements, which is why I did not
> use it...
>
The thing is that, without built-in registry support, you have no /proc export
of any status data either.
--
Philippe.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:06 ` Jan Kiszka
@ 2008-08-23 11:24 ` Gilles Chanteperdrix
0 siblings, 0 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 11:24 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai-core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
>>>> Gilles Chanteperdrix wrote:
>>>>> Jan Kiszka wrote:
>>>>>> Hi Gilles,
>>>>>>
>>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>>> races against pse51_mutex_destroy_internal?
>>>>>>
>>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>>> queue to find out whether a given object has been initialized and
>>>>>> registered already or not. Can't this be encoded differently?
>>>>> We actually iterate over the queue only if the magic happens to be
>>>>> correct, which is not the common case.
>>>> However, there remains a race window with other threads removing other
>>>> mutex objects in parallel, changing the queue - risking a kernel oops.
>>>> And that is what worries me. It's unlikely. but possible. It's unclean.
>>> Ok. This used to be protected by the nklock. We should add the nklock again.
>> Well I do not think that anyone is rescheduling, so we could probably
>> replace the nklock with a per-kqueue xnlock.
>
> If nklock or per queue - both will introduce O(n) at least local
> preemption blocking. That's why I was asking for an alternative
> algorithm than iterating over the whole list.
I insist:
- the loop does almost nothing, so n will have to become very large for
it to take a long time, and n is the number of mutexes allocated so far
in one application, or the number of shared mutexes, which is probably
even less.
- the loop happens if the magic happens to be good, so probably only if
you are calling pthread_mutex_init twice for the same mutex, the normal
use-case is to use memory from BSS to allocate mutex, so the magic of a
normal application calling pthread_mutex_init is always 0, and you do
not enter the loop.
Today, I consider it much more a problem that I can not call fork in a
xenomai application with opened descriptors and exit the parent
application without the file descriptors being closed in the child too.
And this will be the thing I will spend time to fix first. Using the
registry in the posix skin will only come next.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:07 ` Gilles Chanteperdrix
2008-08-23 11:13 ` Philippe Gerum
2008-08-23 11:16 ` Philippe Gerum
@ 2008-08-23 11:31 ` Jan Kiszka
2008-08-23 11:33 ` Gilles Chanteperdrix
2 siblings, 1 reply; 16+ messages in thread
From: Jan Kiszka @ 2008-08-23 11:31 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: Xenomai-core
[-- Attachment #1: Type: text/plain, Size: 2117 bytes --]
Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
>> Gilles Chanteperdrix wrote:
>>> Hi Jan,
>>>
>>> Please do not use my address at gmail, gna does not want me to post from
>>> this address:
>>>
>>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>>> s in a black list at dsn.rfc-ignorant.org
>>>
>>> so, here is a repost of my answer:
>>>
>>> Jan Kiszka wrote:
>>>>> Hi Gilles,
>>>>>
>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>> races against pse51_mutex_destroy_internal?
>>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>>> is to catch most of invalid usages, it seems we can not catch them all.
>>>
>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>> queue to find out whether a given object has been initialized and
>>>>> registered already or not. Can't this be encoded differently?
>>>>>
>>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>>> memory region? Why not using a handle here, like the native skin does?
>>>>> Won't that allow to resolve the issue above as well?
>>> This has been so from the beginning, and I did not change it.
>>>
>> To get registry handles, you first need to register objects. The POSIX skin
>> still does not use the built-in registry, that's why.
>
> Well the registry is about associating objects with their name, and
> since most posix skin objects have no name, I did not see the point of
> using the registry. And for the named objects, the nucleus registry was
> not compatible with the posix skin requirements, which is why I did not
> use it...
The registry is also about providing user-safe handles for unnamed
object - so that you don't risk accepting borken kernel pointers from
user space.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 258 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:16 ` Philippe Gerum
@ 2008-08-23 11:31 ` Gilles Chanteperdrix
0 siblings, 0 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 11:31 UTC (permalink / raw)
To: rpm; +Cc: Xenomai-core
Philippe Gerum wrote:
> Gilles Chanteperdrix wrote:
>> Philippe Gerum wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Hi Jan,
>>>>
>>>> Please do not use my address at gmail, gna does not want me to post from
>>>> this address:
>>>>
>>>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>>>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>>>> s in a black list at dsn.rfc-ignorant.org
>>>>
>>>> so, here is a repost of my answer:
>>>>
>>>> Jan Kiszka wrote:
>>>>>> Hi Gilles,
>>>>>>
>>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>>> races against pse51_mutex_destroy_internal?
>>>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>>>> is to catch most of invalid usages, it seems we can not catch them all.
>>>>
>>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>>> queue to find out whether a given object has been initialized and
>>>>>> registered already or not. Can't this be encoded differently?
>>>>>>
>>>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>>>> memory region? Why not using a handle here, like the native skin does?
>>>>>> Won't that allow to resolve the issue above as well?
>>>> This has been so from the beginning, and I did not change it.
>>>>
>>> To get registry handles, you first need to register objects. The POSIX skin
>>> still does not use the built-in registry, that's why.
>> Well the registry is about associating objects with their name, and
>> since most posix skin objects have no name, I did not see the point of
>> using the registry. And for the named objects, the nucleus registry was
>> not compatible with the posix skin requirements, which is why I did not
>> use it...
>>
>
> The thing is that, without built-in registry support, you have no /proc export
> of any status data either.
Yes, I did not see the point at the time when the registry was added,
but I do see it now...
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Xenomai-core] Racy pse51_mutex_check_init?
2008-08-23 11:31 ` Jan Kiszka
@ 2008-08-23 11:33 ` Gilles Chanteperdrix
0 siblings, 0 replies; 16+ messages in thread
From: Gilles Chanteperdrix @ 2008-08-23 11:33 UTC (permalink / raw)
To: Jan Kiszka; +Cc: Xenomai-core
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Philippe Gerum wrote:
>>> Gilles Chanteperdrix wrote:
>>>> Hi Jan,
>>>>
>>>> Please do not use my address at gmail, gna does not want me to post from
>>>> this address:
>>>>
>>>> 2008-08-23 12:10:19 1KWq4T-0000zD-9E ** xenomai@xenomai.org <Xenomai-core@domain.hid
>>>>> R=dnslookup T=remote_smtp: SMTP error from remote mailer after RCPT TO:<Xenomai-
>>>> core@domain.hid>: host mail.gna.org [88.191.250.46]: 550 rejected because gmail.com i
>>>> s in a black list at dsn.rfc-ignorant.org
>>>>
>>>> so, here is a repost of my answer:
>>>>
>>>> Jan Kiszka wrote:
>>>>>> Hi Gilles,
>>>>>>
>>>>>> trying to understand the cb_read/write lock usage, some question came up
>>>>>> here: What prevents that the mutexq iteration in pse51_mutex_check_init
>>>>>> races against pse51_mutex_destroy_internal?
>>>> Well, I am afraid the mechanism used is not 100% safe. Anyway, the aim
>>>> is to catch most of invalid usages, it seems we can not catch them all.
>>>>
>>>>>> If nothing, then I wonder if we actually have to iterate over the whole
>>>>>> queue to find out whether a given object has been initialized and
>>>>>> registered already or not. Can't this be encoded differently?
>>>>>>
>>>>>> BTW, shadow_mutex.mutex is a kernel pointer sitting in a user-reachable
>>>>>> memory region? Why not using a handle here, like the native skin does?
>>>>>> Won't that allow to resolve the issue above as well?
>>>> This has been so from the beginning, and I did not change it.
>>>>
>>> To get registry handles, you first need to register objects. The POSIX skin
>>> still does not use the built-in registry, that's why.
>> Well the registry is about associating objects with their name, and
>> since most posix skin objects have no name, I did not see the point of
>> using the registry. And for the named objects, the nucleus registry was
>> not compatible with the posix skin requirements, which is why I did not
>> use it...
>
> The registry is also about providing user-safe handles for unnamed
> object - so that you don't risk accepting borken kernel pointers from
> user space.
Yes, and from a security point of view, accepting pointers from
user-space may help an ordinary user become root by passing cleverly
crafted kernel-space addresses.
--
Gilles.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-08-23 11:33 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-23 8:33 [Xenomai-core] Racy pse51_mutex_check_init? Jan Kiszka
2008-08-23 10:21 ` Gilles Chanteperdrix
2008-08-23 10:34 ` Gilles Chanteperdrix
2008-08-23 10:53 ` Philippe Gerum
2008-08-23 11:07 ` Gilles Chanteperdrix
2008-08-23 11:13 ` Philippe Gerum
2008-08-23 11:16 ` Philippe Gerum
2008-08-23 11:31 ` Gilles Chanteperdrix
2008-08-23 11:31 ` Jan Kiszka
2008-08-23 11:33 ` Gilles Chanteperdrix
2008-08-23 10:43 ` Gilles Chanteperdrix
2008-08-23 10:51 ` Jan Kiszka
2008-08-23 10:58 ` Gilles Chanteperdrix
2008-08-23 11:02 ` Gilles Chanteperdrix
2008-08-23 11:06 ` Jan Kiszka
2008-08-23 11:24 ` Gilles Chanteperdrix
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.