2004-03-25 15:35:38

by Kirk Reiser

[permalink] [raw]
Subject: help needed with acquire/release_console_sem() problem.

Hello folks: I am hoping someone may be able to help me with a
problem I have been experiencing since the release of 2.6.3. It
appears that because of the likeliness of race conditions occuring
while accessing console services acquire_console_sem() and
release_console_sem() were placed around sections of code which could
lead to these races.

In my speakup console code I tried to put the same functions around
possible problem code with the result that it locks up the computer to
the point of a hardware reset being necessary. I have placed the code
in my functions for cutting and pasting portions of screen memory
which is where the new changes address the problem to some extent in
the kernel code. The comments to release_console_sem() state that the
functions are safe and may be called from any context but either that
isn't true or because I am in kernelspace I cannot schedule() off. I
am not exactly sure what the reasoning is or how to get around the
situation so if anyone has any suggestions I'd love to hear about it.

What I currently do is mark portions of screen memory and then call
set_selection and paste_selection with the marked region of memory
which is what other functions seem to do to provide copy and paste
facilities. I cannot just ignore the situation because the acquire
and release_console_sem() calls have been placed around portions of
that code as well such as clear_selection and paste_selection().

Kirk

--

Kirk Reiser The Computer Braille Facility
e-mail: [email protected] University of Western Ontario
phone: (519) 661-3061


2004-04-07 20:53:38

by Randy.Dunlap

[permalink] [raw]
Subject: Re: help needed with acquire/release_console_sem() problem.

On Thu, 25 Mar 2004 10:35:28 -0500 Kirk Reiser wrote:

| Hello folks: I am hoping someone may be able to help me with a
| problem I have been experiencing since the release of 2.6.3. It
| appears that because of the likeliness of race conditions occuring
| while accessing console services acquire_console_sem() and
| release_console_sem() were placed around sections of code which could
| lead to these races.
|
| In my speakup console code I tried to put the same functions around
| possible problem code with the result that it locks up the computer to
| the point of a hardware reset being necessary. I have placed the code
| in my functions for cutting and pasting portions of screen memory
| which is where the new changes address the problem to some extent in
| the kernel code. The comments to release_console_sem() state that the
| functions are safe and may be called from any context

release_console_sem() comment says that. acquire() does not.

| but either that
| isn't true or because I am in kernelspace I cannot schedule() off. I

Why do you want to call schedule()?

| am not exactly sure what the reasoning is or how to get around the
| situation so if anyone has any suggestions I'd love to hear about it.

Are you using preempt (CONFIG_PREEMPT)? Would it cause any
scheduling or semaphore problems or differences?

| What I currently do is mark portions of screen memory and then call
| set_selection and paste_selection with the marked region of memory
| which is what other functions seem to do to provide copy and paste
| facilities. I cannot just ignore the situation because the acquire
| and release_console_sem() calls have been placed around portions of
| that code as well such as clear_selection and paste_selection().

I suppose that you could post some real code to see if someone
sees any problems in it.

--
~Randy
"We have met the enemy and he is us." -- Pogo (by Walt Kelly)
(Again. Sometimes I think ln -s /usr/src/linux/.config .signature)