Commit 3a48d8d2 authored by Federico Vaga's avatar Federico Vaga Committed by Vaibhav Gupta

software: kernel: svec-core-fpga: Prevent memory leak and correspoing OOPS

If the driver is not able to create "dbg_dir", the pointer should be set
as NULL and should not be left with some error-pointer.
Reported-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
Signed-off-by: 's avatarVaibhav Gupta <vaibhav.gupta@cern.ch>
parent 9ce97270
......@@ -146,6 +146,7 @@ static int svec_fpga_dbg_init(struct svec_fpga *svec_fpga)
svec_dev->dbg_dir);
if (IS_ERR_OR_NULL(svec_fpga->dbg_dir)) {
err = PTR_ERR(svec_fpga->dbg_dir);
svec_fpga->dbg_dir = NULL;
dev_err(&svec_fpga->dev,
"Cannot create debugfs directory \"%s\" (%d)\n",
dev_name(&svec_fpga->dev), err);
......@@ -159,6 +160,7 @@ static int svec_fpga_dbg_init(struct svec_fpga *svec_fpga)
&svec_fpga->dbg_csr_reg);
if (IS_ERR_OR_NULL(svec_fpga->dbg_csr)) {
err = PTR_ERR(svec_fpga->dbg_csr);
svec_fpga->dbg_csr = NULL;
dev_warn(&svec_fpga->dev,
"Cannot create debugfs file \"%s\" (%d)\n",
SVEC_DBG_CSR_NAME, err);
......@@ -172,6 +174,7 @@ static int svec_fpga_dbg_init(struct svec_fpga *svec_fpga)
&svec_fpga_dbg_bld_info_ops);
if (IS_ERR_OR_NULL(svec_fpga->dbg_bld_info)) {
err = PTR_ERR(svec_fpga->dbg_bld_info);
svec_fpga->dbg_bld_info = NULL;
dev_err(&svec_fpga->dev,
"Cannot create debugfs file \"%s\" (%d)\n",
SVEC_DBG_BLD_INFO_NAME, err);
......@@ -181,6 +184,7 @@ static int svec_fpga_dbg_init(struct svec_fpga *svec_fpga)
return 0;
err:
debugfs_remove_recursive(svec_fpga->dbg_dir);
svec_fpga->dbg_dir = NULL;
return err;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment