From: Hugh Dickins default_llseek's use of BKL and not i_sem was recently exposed: tmpfs should be using generic_file_llseek which guards with i_sem. mm/shmem.c | 1 + 1 files changed, 1 insertion(+) diff -puN mm/shmem.c~tmpfs-3-user-generic_file_llseek mm/shmem.c --- 25/mm/shmem.c~tmpfs-3-user-generic_file_llseek 2003-04-02 22:51:08.000000000 -0800 +++ 25-akpm/mm/shmem.c 2003-04-02 22:51:08.000000000 -0800 @@ -1749,6 +1749,7 @@ static struct address_space_operations s static struct file_operations shmem_file_operations = { .mmap = shmem_mmap, #ifdef CONFIG_TMPFS + .llseek = generic_file_llseek, .read = shmem_file_read, .write = shmem_file_write, .fsync = simple_sync_file, _