Changeset 44974


Ignore:
Timestamp:
2015-03-25T09:59:12+01:00 (3 years ago)
Author:
juhosg
Message:

kernel: yaffs: use new_sync_{read,write} for 3.18+

Using the do_sync_{read,write} functions in conjunction
with the generic_file_{read,write}_iter causes a kernel
panic like this:

root@OpenWrt:/# mount -t yaffs /dev/mtdblock5 /mnt
[ 2884.110000] yaffs: dev is 32505861 name is "mtdblock5" rw
[ 2884.120000] yaffs: passed flags ""
root@OpenWrt:/# hexdump -vC -n 64 /mnt/kernel
[ 2902.700000] CPU 0 Unable to handle kernel paging request at virtual \

address 00000000, epc == 00000000, ra == 80129414

[ 2902.710000] Oops#1:
[ 2902.710000] CPU: 0 PID: 1030 Comm: hexdump Not tainted 3.18.9 #2
[ 2902.710000] task: 878e7a20 ti: 868c6000 task.ti: 868c6000
[ 2902.710000] $ 0 : 00000000 fffffff8 00000000 00000000
[ 2902.710000] $ 4 : 868c7e70 868c7ea8 00000001 868c7f08
[ 2902.710000] $ 8 : 00000038 80064f18 80072280 00000000
[ 2902.710000] $12 : 7fa152b8 7709e3a0 00c42008 7709e3a0
[ 2902.710000] $16 : 868c7f08 86a46000 00000010 878e7a20
[ 2902.710000] $20 : 7705c4b0 00000010 00000000 00000000
[ 2902.710000] $24 : 770960bc 7707dd78
[ 2902.710000] $28 : 868c6000 868c7e58 7f8e7030 80129414
[ 2902.710000] Hi : 00000000
[ 2902.710000] Lo : ffffffff
[ 2902.710000] epc : 00000000 (null)
[ 2902.710000] Not tainted
[ 2902.710000] ra : 80129414 do_sync_read+0x7c/0xb4
[ 2902.710000] Status: 1900dc03 KERNEL EXL IE
[ 2902.710000] Cause : 00800008
[ 2902.710000] BadVA : 00000000
[ 2902.710000] PrId : 00019750 (MIPS 74Kc)

Change the yaffs code to use the new_sync_{read,write} functions
instead.

Signed-off-by: Gabor Juhos <juhosg@…>

Location:
trunk/target/linux/generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/patches-3.18/505-yaffs-3.16-new-fops.patch

    r44678 r44974  
    11--- a/fs/yaffs2/yaffs_vfs.c 
    22+++ b/fs/yaffs2/yaffs_vfs.c 
    3 @@ -796,13 +796,13 @@ static int yaffs_sync_object(struct file 
     3@@ -794,15 +794,15 @@ static int yaffs_sync_object(struct file 
     4  
     5 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) 
    46 static const struct file_operations yaffs_file_operations = { 
    5         .read = do_sync_read, 
    6         .write = do_sync_write, 
     7-       .read = do_sync_read, 
     8-       .write = do_sync_write, 
    79-       .aio_read = generic_file_aio_read, 
    810-       .aio_write = generic_file_aio_write, 
     11+       .read = new_sync_read, 
     12+       .write = new_sync_write, 
    913+       .read_iter = generic_file_read_iter, 
    1014+       .write_iter = generic_file_write_iter, 
  • trunk/target/linux/generic/patches-3.19/505-yaffs-3.16-new-fops.patch

    r44876 r44974  
    11--- a/fs/yaffs2/yaffs_vfs.c 
    22+++ b/fs/yaffs2/yaffs_vfs.c 
    3 @@ -796,13 +796,13 @@ static int yaffs_sync_object(struct file 
     3@@ -794,15 +794,15 @@ static int yaffs_sync_object(struct file 
     4  
     5 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) 
    46 static const struct file_operations yaffs_file_operations = { 
    5         .read = do_sync_read, 
    6         .write = do_sync_write, 
     7-       .read = do_sync_read, 
     8-       .write = do_sync_write, 
    79-       .aio_read = generic_file_aio_read, 
    810-       .aio_write = generic_file_aio_write, 
     11+       .read = new_sync_read, 
     12+       .write = new_sync_write, 
    913+       .read_iter = generic_file_read_iter, 
    1014+       .write_iter = generic_file_write_iter, 
  • trunk/target/linux/generic/patches-4.0/505-yaffs-3.16-new-fops.patch

    r44876 r44974  
    11--- a/fs/yaffs2/yaffs_vfs.c 
    22+++ b/fs/yaffs2/yaffs_vfs.c 
    3 @@ -796,13 +796,13 @@ static int yaffs_sync_object(struct file 
     3@@ -794,15 +794,15 @@ static int yaffs_sync_object(struct file 
     4  
     5 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) 
    46 static const struct file_operations yaffs_file_operations = { 
    5         .read = do_sync_read, 
    6         .write = do_sync_write, 
     7-       .read = do_sync_read, 
     8-       .write = do_sync_write, 
    79-       .aio_read = generic_file_aio_read, 
    810-       .aio_write = generic_file_aio_write, 
     11+       .read = new_sync_read, 
     12+       .write = new_sync_write, 
    913+       .read_iter = generic_file_read_iter, 
    1014+       .write_iter = generic_file_write_iter, 
Note: See TracChangeset for help on using the changeset viewer.