Messages in this thread | | | Date | Thu, 1 Jun 2006 15:55:35 -0400 | From | Joe Korty <> | Subject | lock_kernel called under spinlock in NFS |
| |
Tree 5fdccf2354269702f71beb8e0a2942e4167fd992
[PATCH] vfs: *at functions: core
introduced a bug where lock_kernel() can be called from under a spinlock. To trigger the bug one must have CONFIG_PREEMPT_BKL=y and be using NFS heavily. It is somewhat rare and, so far, haven't traced down the userland sequence that causes the fatal path to be taken.
The bug was caused by the insertion into do_path_lookup() of a call to file_permission(). do_path_lookup() read-locks current->fs->lock for most of its operation. file_permission() calls permission() which calls nfs_permission(), which has one path through it that uses lock_kernel().
I am not sure how to fix this bug. It is not clear what the lock_kernel() call is protecting. Nor is it clear why, as part of the introduction of the openat() etc services, it was desirable to add a call to file_permission() to do_path_lookup().
For now, I plan to turn off CONFIG_PREEMPT_BKL.
Regards, Joe - 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/
| |