Trace Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am just going to be blunt and assume that my trace is wrong.
I am tracing the bug , https://bugzilla.kernel.org/show_bug.cgi?id=72291.
Here are my trace steps
1.Start in _break_lease and find locks_insert_block and trace into that function
2. In that function we hit the internal function, _locks_insert_block and I
trace into that function
3. When I trace into that function , I get see we are using the same spinlocks
as the other functions and come to the conclusion we are not holding the
right spinlock and are looping indefinitely
4. This comment , /* Must be called with i_lock held. */ seems to a
value thing to check if we
are holding the i_lock spinlock
5.I trace back to where we are calling in the function, _break_lease
and we are calling like this,
locks_insert_block(flock, new_fl);
I known that flock is the lock that we are calling with and logically
needs the i_lock
6. flock = inode->i_flock; is clearly not the right lock and we are
already holding it in another
spinlock as part of this function , spin_lock(&inode->i_lock);
This means that we are looping forever trying to get the i_lock that
is already held by another spinlock,
causing us to loop forever when we call _break_lease.
Nick

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux