Re: set_fs() preemption safety? [was sys_fs() safety oops !]

From: Arnd Bergmann
Date: Sun Jul 04 2004 - 09:56:23 EST


On Sonntag, 4. Juli 2004 16:36, BAIN wrote:
> is the following block safe to be used in preemptible kernels?
>
> old_fs = get_fs();
> set_fs(KERNEL_DS);
>
> do_your_things here; (usually call sys calls stuff from kernel space)
>
> set_fs(old_fs);

On most architectures, this should not be a problem, because set_fs()
only modifies the state of the current task, not any actual processor
registers as the name suggests.

However, on s390 the state is actually kept in cpu control register cr7
and not in the task_struct. Martin, can you comment on how this is
maintained over a schedule() or if this is a real bug?

Arnd <><

Attachment: pgp00000.pgp
Description: signature