From 242600283f0083f0ba657aa1c00d718d7845ea7a Mon Sep 17 00:00:00 2001 From: Ketan Patil Date: Fri, 29 Apr 2022 03:48:02 +0000 Subject: [PATCH] video: tegra: nvmap: Do not export cvnas_dev By exporting cvnas_dev all the internal data of the driver is getting exposed to any driver that uses it. This could allow drivers to corrupt this driver data. Hence do not export cvnas_dev, use helper functions to get it's required member elements from nvmap. Bug 200722684 Bug 3528414 Change-Id: I17f6fa1e98c777a7ec9118dbc6f0c6359e949f22 Signed-off-by: Ketan Patil Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2704698 Reviewed-by: Puneet Saxena Reviewed-by: Jonathan Hunter Reviewed-by: Sachin Nikam --- drivers/platform/tegra/cvnas/cvnas.c | 30 ++++++++++++++++++++++++---- include/linux/cvnas.h | 27 ------------------------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/drivers/platform/tegra/cvnas/cvnas.c b/drivers/platform/tegra/cvnas/cvnas.c index ed85a800..d9fce5cb 100644 --- a/drivers/platform/tegra/cvnas/cvnas.c +++ b/drivers/platform/tegra/cvnas/cvnas.c @@ -80,10 +80,31 @@ static bool cvnas_rail; #define HSM_CVSRAM_ECC_DED_MASK_0 0x80000000 #define HSM_CVSRAM_ECC_DED_MASK_1 0x00000007 -struct cvnas_device *cvnas_dev; -#ifndef CVNAS_MODULE -EXPORT_SYMBOL(cvnas_dev); -#endif /* !CVNAS_MODULE */ +struct cvnas_device { + struct dentry *debugfs_root; + + void __iomem *cvsram_iobase; + void __iomem *cvreg_iobase; + void __iomem *hsm_iobase; + + struct device dma_dev; + + int nslices; + int slice_size; + phys_addr_t cvsram_base; + size_t cvsram_size; + + struct clk *clk; + struct device_attribute *attr; + + struct reset_control *rst; + struct reset_control *rst_fcm; + + bool virt; + + int (*pmops_busy)(void); + int (*pmops_idle)(void); +}; static struct platform_device *cvnas_plat_dev; @@ -521,6 +542,7 @@ MODULE_DEVICE_TABLE(of, nvcvnas_of_ids); static int nvcvnas_probe(struct platform_device *pdev) { + struct cvnas_device *cvnas_dev; int ret; u32 cvsram_slice_data[2]; u32 cvsram_reg_data[4]; diff --git a/include/linux/cvnas.h b/include/linux/cvnas.h index d89bf6be..54b2d64f 100644 --- a/include/linux/cvnas.h +++ b/include/linux/cvnas.h @@ -21,33 +21,6 @@ #define __LINUX_CVNAS_H #include -#include - -struct cvnas_device { - struct dentry *debugfs_root; - - void __iomem *cvsram_iobase; - void __iomem *cvreg_iobase; - void __iomem *hsm_iobase; - - struct device dma_dev; - - int nslices; - int slice_size; - phys_addr_t cvsram_base; - size_t cvsram_size; - - struct clk *clk; - struct device_attribute *attr; - - struct reset_control *rst; - struct reset_control *rst_fcm; - - bool virt; - - int (*pmops_busy)(void); - int (*pmops_idle)(void); -}; int nvcvnas_busy(void); int nvcvnas_busy_no_rpm(void);