DragonFly kernel List (threaded) for 2003-09
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
Re: stackgap removal in linux_socket.c
In article <slrnbnd29r.1pn1.daver@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, David P. Reese, Jr. wrote:
> As I understand, stackgap_init() and stackgap_alloc() allow you to store
> temporary data below the stack in a userland process. I would like to make
> sure that the following are in fact correct:
>
> 1) It is much faster to store data in the stackgap when compared to
> using real dynamic storage like MALLOC() because setting up the
> stackgap simply computes an offset in userspace.
>
> 2) The stackgap can only be used for a *very* temporary scratch space
> because you have no guarantee that a userland process won't trash
> what you are storing in the stackgap between syscalls.
>
> In removing the use of the stackgap in linux_socket.c, I want to make sure
> that I don't overlook a subtlety and shoot myself in the foot.
>
> I would reason that anything small like an int could be defined as a local
> variable instead of a stackgap variable while using MALLOC()/FREE() for
> allocating large structures in the less often traveled code paths.
>
> Why would anyone use the stackgap in the first place?
Crud... I just figured out my answer to my question. You can't copyin from
kernel space. Thank god I can remove the stackgap code with the new split
syscalls.
--
David P. Reese, Jr. daver@xxxxxxxxxxxx
http://www.gomerbud.com/daver/
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]