diff options
author | Xianzhong <xianzhong.li@nxp.com> | 2018-09-08 05:43:08 +0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2019-02-12 10:33:54 +0800 |
commit | 70b88529efdc022ac76a43c2a0318f941ecb0059 (patch) | |
tree | 95035b656984980ee386e206a44b29c08d56af1c /drivers/mxc/gpu-viv/hal/os/linux | |
parent | 4c2ce6336e91794523dc1c8e998eb895c61c18c1 (diff) |
MGS-4151-24 [#imx-1166] merge debugfs fix for kernel panic
CL172719 fix debugfs bugs and kernel panic fix ARTPEC7-31
cherry-pick patch:
6.2.4.p3-0106-CL172719-fix-debugfs-bugs-and-kernel-panic-fix-ARTPE
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
(cherry picked from commit a8bff203ae6b83a301af6b946f990b7d373ace77)
Diffstat (limited to 'drivers/mxc/gpu-viv/hal/os/linux')
-rw-r--r-- | drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_debugfs.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_debugfs.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_debugfs.c index 1bb68fcd6c88..885eec644bb0 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_debugfs.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_debugfs.c @@ -371,7 +371,7 @@ _ReadFromNode ( { kfree(Node->temp); - if ( ( retval = kmalloc ( sizeof (char ) * remaining , GFP_KERNEL ) ) == NULL ) + if ( ( retval = kmalloc ( sizeof (char ) * remaining , GFP_ATOMIC ) ) == NULL ) return NULL; Node->temp = retval; @@ -518,22 +518,23 @@ _DebugFSPrint ( { char buffer[MAX_LINE_SIZE] ; int len ; - ssize_t res=0; + ssize_t res = 0; - len = vsnprintf ( buffer , sizeof (buffer ) , Message , *( va_list * ) Arguments ) ; - - buffer[len] = '\0' ; - - /* Add end-of-line if missing. */ - if ( buffer[len - 1] != '\n' ) + if ( gc_dbgfs.currentNode ) { - buffer[len ++] = '\n' ; - buffer[len] = '\0' ; - } + len = vsnprintf ( buffer , sizeof (buffer ) , Message , *( va_list * ) Arguments ) ; - res = _AppendString ( gc_dbgfs.currentNode , buffer , len ) ; + buffer[len] = '\0' ; + /* Add end-of-line if missing. */ + if ( buffer[len - 1] != '\n' ) + { + buffer[len ++] = '\n' ; + buffer[len] = '\0' ; + } - wake_up_interruptible ( gcmkNODE_READQ ( gc_dbgfs.currentNode ) ) ; /* blocked in read*/ + res = _AppendString ( gc_dbgfs.currentNode , buffer , len ) ; + wake_up_interruptible ( gcmkNODE_READQ ( gc_dbgfs.currentNode ) ) ; /* blocked in read*/ + } return res; } @@ -958,7 +959,7 @@ gckDEBUGFS_Print ( ... ) { - ssize_t _debugfs_res; + ssize_t _debugfs_res = 0; gcmkDEBUGFS_PRINT ( _GetArgumentSize ( Message ) , Message ) ; return _debugfs_res; } |