> > From: Andy Lutomirski <[email protected]> > > > + /* > > + * The caller may be under interrupt disabled condition. Ensure > > interrupt > > + * allowance before the memory allocation, which may involve with > > page faults. > > + */ > > + local_irq_enable();
> ... you can't just enable IRQs here. If IRQs are off, they're off for a > reason. Secondly, if they're *on*, you just forgot that fact. Good catch. This is a trap handler from user-space and should never be called with irqs disabled, So the local_irq_enable() should be dead code. Chang suggested that he erroneously left it in from a previous implementation. > > + /* We need 64B aligned pointer, but vmalloc() returns a > > page-aligned address */ > > + state_ptr = vmalloc(newsz); > And allocating this state from vmalloc() seems questionable. Why are you > doing this? While the buffer needs to be virtually contiguous, it doesn't need to be physically contiguous, And so vmalloc() is less overhead than kmalloc() for this. Thanks, -Len

