lkml.org 
[lkml]   [2008]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Sparse annotation for "context imbalance" false positives?
Date
 > You could, for example, insert this:
>
> > static void mlx4_ib_lock_cqs(struct mlx4_ib_cq *send_cq, struct mlx4_ib_cq *recv_cq)
> > {
> > if (send_cq == recv_cq)
> {
> > spin_lock_irq(&send_cq->lock);
> /* pretend to have acquired both for sparse */
> __acquire(&recv_cq->lock);
> }

but the problem sparse sees is not that some paths take only one lock
and some take two -- sparse is complaining that this function is
returning without unlocking the locks that it takes. Even if I change
the function to something as simple as:

static void mlx4_ib_lock_cqs(struct mlx4_ib_cq *send_cq, struct mlx4_ib_cq *recv_cq)
{
spin_lock_irq(&recv_cq->lock);
}
I still get

drivers/infiniband/hw/mlx4/qp.c:603:13: warning: context imbalance in 'mlx4_ib_lock_cqs' - wrong count at exitn

thanks,
Roland


\
 
 \ /
  Last update: 2008-05-15 17:11    [from the cache]
©2003-2011 Jasper Spaans