lkml.org 
[lkml]   [2002]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH] cli()/sti() fix for drivers/net/depca.c
Date
On 2 October 2002 18:40, Francois Romieu wrote:
> Denis Vlasenko <vda@port.imtp.ilyichevsk.odessa.ua> :
> > diff -u --recursive linux-2.5.38orig/drivers/net/depca.c
> > linux-2.5.38/drivers/net/depca.c ---
> > linux-2.5.38orig/drivers/net/depca.c Sun Sep 22 04:25:10 2002 +++
> > linux-2.5.38/drivers/net/depca.c Wed Oct 2 01:16:57 2002
>
> [...]
>
> > @@ -1999,18 +2000,19 @@
> > break;
> >
> > case DEPCA_GET_STATS: /* Get the driver statistics */
> > - cli();
> > +
> > + spin_lock_irqsave(&lp->lock, flags);
> > ioc->len = sizeof(lp->pktStats);
> > if (copy_to_user(ioc->data, &lp->pktStats, ioc->len))
> > status = -EFAULT;
> > - sti();
> > + spin_unlock_irqrestore(&lp->lock, flags);

Did I say it's my first network patch? :-)

> - copy_to_user() may sleep. Sleeping with spinlock held hurts badly.

Ho to do it properly? Make a copy on stack under lock, release lock,
proceed with copy_to_user? That's 88 bytes at least...

> - on SMP, pktStat can be updated while the copy progresses, see depca_rx().

Should I place these pktStat updates under lp->lock?
--
vda
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:29    [W:0.044 / U:0.444 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site