diff mbox series

[v1] fsi: Fix panic on scom file read

Message ID 20231214000744.1281464-1-lakshmiy@us.ibm.com
State New
Headers show
Series [v1] fsi: Fix panic on scom file read | expand

Commit Message

Lakshmi Yadlapati Dec. 14, 2023, 12:07 a.m. UTC
Reading the scom file without the custom open method (i2cr_scom_open)
causes a kernel panic. This change replaces simple_open with i2cr_scom_open
to properly initialize the private_data field in the file structure,
preventing the panic during scom file operations.

Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
---
 drivers/fsi/i2cr-scom.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Ninad Palsule Dec. 14, 2023, 2:09 a.m. UTC | #1
Hi Lakshmi,

On 12/13/23 18:07, Lakshmi Yadlapati wrote:
> Reading the scom file without the custom open method (i2cr_scom_open)
> causes a kernel panic. This change replaces simple_open with i2cr_scom_open
> to properly initialize the private_data field in the file structure,
> preventing the panic during scom file operations.
>
> Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
> ---
>   drivers/fsi/i2cr-scom.c | 11 ++++++++++-
>   1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/fsi/i2cr-scom.c b/drivers/fsi/i2cr-scom.c
> index cb7e02213032..8d65c562b488 100644
> --- a/drivers/fsi/i2cr-scom.c
> +++ b/drivers/fsi/i2cr-scom.c
> @@ -73,9 +73,18 @@ static ssize_t i2cr_scom_write(struct file *filep, const char __user *buf, size_
>   	return len;
>   }
>   
> +static int i2cr_scom_open(struct inode *inode, struct file *file)
> +{
> +	struct i2cr_scom *scom = container_of(inode->i_cdev, struct i2cr_scom, cdev);
> +
> +	file->private_data = scom;
> +
> +	return 0;
> +}
> +
>   static const struct file_operations i2cr_scom_fops = {
>   	.owner		= THIS_MODULE,
> -	.open		= simple_open,
> +	.open		= i2cr_scom_open,
>   	.llseek		= i2cr_scom_llseek,
>   	.read		= i2cr_scom_read,
>   	.write		= i2cr_scom_write,


Looks good.

Reviewed-by: Ninad Palsule <ninad@linux.ibm.com>
diff mbox series

Patch

diff --git a/drivers/fsi/i2cr-scom.c b/drivers/fsi/i2cr-scom.c
index cb7e02213032..8d65c562b488 100644
--- a/drivers/fsi/i2cr-scom.c
+++ b/drivers/fsi/i2cr-scom.c
@@ -73,9 +73,18 @@  static ssize_t i2cr_scom_write(struct file *filep, const char __user *buf, size_
 	return len;
 }
 
+static int i2cr_scom_open(struct inode *inode, struct file *file)
+{
+	struct i2cr_scom *scom = container_of(inode->i_cdev, struct i2cr_scom, cdev);
+
+	file->private_data = scom;
+
+	return 0;
+}
+
 static const struct file_operations i2cr_scom_fops = {
 	.owner		= THIS_MODULE,
-	.open		= simple_open,
+	.open		= i2cr_scom_open,
 	.llseek		= i2cr_scom_llseek,
 	.read		= i2cr_scom_read,
 	.write		= i2cr_scom_write,