Patch "f2fs: fix the assign logic of iocb" has been added to the 6.0-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    f2fs: fix the assign logic of iocb

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     f2fs-fix-the-assign-logic-of-iocb.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1c837ab36d98f8f263043d068913d9afc1bbe8d5
Author: Mukesh Ojha <quic_mojha@xxxxxxxxxxx>
Date:   Thu Oct 27 14:42:40 2022 +0530

    f2fs: fix the assign logic of iocb
    
    [ Upstream commit 0db18eec0d9a7ee525209e31e3ac2f673545b12f ]
    
    commit 18ae8d12991b ("f2fs: show more DIO information in tracepoint")
    introduces iocb field in 'f2fs_direct_IO_enter' trace event
    And it only assigns the pointer and later it accesses its field
    in trace print log.
    
    Unable to handle kernel paging request at virtual address ffffffc04cef3d30
    Mem abort info:
    ESR = 0x96000007
    EC = 0x25: DABT (current EL), IL = 32 bits
    
     pc : trace_raw_output_f2fs_direct_IO_enter+0x54/0xa4
     lr : trace_raw_output_f2fs_direct_IO_enter+0x2c/0xa4
     sp : ffffffc0443cbbd0
     x29: ffffffc0443cbbf0 x28: ffffff8935b120d0 x27: ffffff8935b12108
     x26: ffffff8935b120f0 x25: ffffff8935b12100 x24: ffffff8935b110c0
     x23: ffffff8935b10000 x22: ffffff88859a936c x21: ffffff88859a936c
     x20: ffffff8935b110c0 x19: ffffff8935b10000 x18: ffffffc03b195060
     x17: ffffff8935b11e76 x16: 00000000000000cc x15: ffffffef855c4f2c
     x14: 0000000000000001 x13: 000000000000004e x12: ffff0000ffffff00
     x11: ffffffef86c350d0 x10: 00000000000010c0 x9 : 000000000fe0002c
     x8 : ffffffc04cef3d28 x7 : 7f7f7f7f7f7f7f7f x6 : 0000000002000000
     x5 : ffffff8935b11e9a x4 : 0000000000006250 x3 : ffff0a00ffffff04
     x2 : 0000000000000002 x1 : ffffffef86a0a31f x0 : ffffff8935b10000
     Call trace:
      trace_raw_output_f2fs_direct_IO_enter+0x54/0xa4
      print_trace_fmt+0x9c/0x138
      print_trace_line+0x154/0x254
      tracing_read_pipe+0x21c/0x380
      vfs_read+0x108/0x3ac
      ksys_read+0x7c/0xec
      __arm64_sys_read+0x20/0x30
      invoke_syscall+0x60/0x150
      el0_svc_common.llvm.1237943816091755067+0xb8/0xf8
      do_el0_svc+0x28/0xa0
    
    Fix it by copying the required variables for printing and while at
    it fix the similar issue at some other places in the same file.
    
    Fixes: bd984c03097b ("f2fs: show more DIO information in tracepoint")
    Signed-off-by: Mukesh Ojha <quic_mojha@xxxxxxxxxxx>
    Reviewed-by: Chao Yu <chao@xxxxxxxxxx>
    Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index f1e922237736..f4556911c234 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -322,7 +322,7 @@ TRACE_EVENT(f2fs_unlink_enter,
 		__field(ino_t,	ino)
 		__field(loff_t,	size)
 		__field(blkcnt_t, blocks)
-		__field(const char *,	name)
+		__string(name,  dentry->d_name.name)
 	),
 
 	TP_fast_assign(
@@ -330,7 +330,7 @@ TRACE_EVENT(f2fs_unlink_enter,
 		__entry->ino	= dir->i_ino;
 		__entry->size	= dir->i_size;
 		__entry->blocks	= dir->i_blocks;
-		__entry->name	= dentry->d_name.name;
+		__assign_str(name, dentry->d_name.name);
 	),
 
 	TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
@@ -338,7 +338,7 @@ TRACE_EVENT(f2fs_unlink_enter,
 		show_dev_ino(__entry),
 		__entry->size,
 		(unsigned long long)__entry->blocks,
-		__entry->name)
+		__get_str(name))
 );
 
 DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
@@ -940,25 +940,29 @@ TRACE_EVENT(f2fs_direct_IO_enter,
 	TP_STRUCT__entry(
 		__field(dev_t,	dev)
 		__field(ino_t,	ino)
-		__field(struct kiocb *,	iocb)
+		__field(loff_t,	ki_pos)
+		__field(int,	ki_flags)
+		__field(u16,	ki_ioprio)
 		__field(unsigned long,	len)
 		__field(int,	rw)
 	),
 
 	TP_fast_assign(
-		__entry->dev	= inode->i_sb->s_dev;
-		__entry->ino	= inode->i_ino;
-		__entry->iocb	= iocb;
-		__entry->len	= len;
-		__entry->rw	= rw;
+		__entry->dev		= inode->i_sb->s_dev;
+		__entry->ino		= inode->i_ino;
+		__entry->ki_pos		= iocb->ki_pos;
+		__entry->ki_flags	= iocb->ki_flags;
+		__entry->ki_ioprio	= iocb->ki_ioprio;
+		__entry->len		= len;
+		__entry->rw		= rw;
 	),
 
 	TP_printk("dev = (%d,%d), ino = %lu pos = %lld len = %lu ki_flags = %x ki_ioprio = %x rw = %d",
 		show_dev_ino(__entry),
-		__entry->iocb->ki_pos,
+		__entry->ki_pos,
 		__entry->len,
-		__entry->iocb->ki_flags,
-		__entry->iocb->ki_ioprio,
+		__entry->ki_flags,
+		__entry->ki_ioprio,
 		__entry->rw)
 );
 
@@ -1407,19 +1411,19 @@ TRACE_EVENT(f2fs_write_checkpoint,
 	TP_STRUCT__entry(
 		__field(dev_t,	dev)
 		__field(int,	reason)
-		__field(char *,	msg)
+		__string(dest_msg, msg)
 	),
 
 	TP_fast_assign(
 		__entry->dev		= sb->s_dev;
 		__entry->reason		= reason;
-		__entry->msg		= msg;
+		__assign_str(dest_msg, msg);
 	),
 
 	TP_printk("dev = (%d,%d), checkpoint for %s, state = %s",
 		show_dev(__entry->dev),
 		show_cpreason(__entry->reason),
-		__entry->msg)
+		__get_str(dest_msg))
 );
 
 DECLARE_EVENT_CLASS(f2fs_discard,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux