lkml.org 
[lkml]   [2009]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [Patch 06/12] Use the new wrapper routines to access debug registers in process/thread code
    On Fri, 29 May 2009, Frederic Weisbecker wrote:

    > On Fri, May 29, 2009 at 02:31:46PM +0530, K.Prasad wrote:
    > > On Thu, May 28, 2009 at 04:42:38PM +1000, David Gibson wrote:
    > > > On Mon, May 11, 2009 at 05:23:44PM +0530, K.Prasad wrote:
    > > > > From: Alan Stern <stern@rowland.harvard.edu>
    > > > >
    > > > > This patch enables the use of abstract debug registers in
    > > > > process-handling routines.
    > > >
    > > > [snip]
    > > > >
    > > > > + p->thread.io_bitmap_ptr = NULL;
    > > >
    > > > Why is manipulating the io_bitmap_ptr relevant to debug register
    > > > handling?
    > >
    > > I *re-read* the patch but was unable to find how this change had sneaked
    > > in. It shouldn't be there although it is harmless.
    >
    >
    > When I reviewed this patch, I also ended stucked on it.
    > But actually I guess I found the sense, this is only for
    > convenience.
    >
    > Look at the current copy_thread() in arch/x86/kernel/process32.c
    >
    > If p->thread.io_bitmap_ptr fails to be duplicated, we set
    > p->thread.io_bitmap_max = 0 and return -ENOMEM
    >
    > Now look at the patch.
    > If we fail to copy the hardware thread virtual registers we
    > want to exit with io_bitmap_ptr = NULL
    > If we fail to copy the io_bitmap, we want to free the breakpoint
    > and exit.
    > If we fail further, we want to free breakpoints and io_bitmap_ptr
    >
    > The out section then tries to:
    >
    > -free the breakpoints
    > -free p->thread.io_bitmap_ptr
    >
    >
    > So it's important to set io_bitmap_ptr to NULL so that
    > we know whether we have to release it or not.

    That's exactly why I wrote it.

    Now, if we could guarantee that io_bitmap_ptr was always NULL upon
    entry to copy_thread(), the statement could of course be removed. In
    fact it probably is NULL, since otherwise the current code wouldn't
    work properly.

    Alan Stern



    \
     
     \ /
      Last update: 2009-05-29 15:57    [W:0.024 / U:1.096 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site