Merge tag 'selinux-pr-20210629' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / drivers / media / pci / cobalt / cobalt-driver.h
index bca68572b3242af74527cfc39f3c67fd6f104721..12c33e035904cac536b55968927a992e0f850066 100644 (file)
@@ -251,6 +251,8 @@ struct cobalt {
        int instance;
        struct pci_dev *pci_dev;
        struct v4l2_device v4l2_dev;
+       /* serialize PCI access in cobalt_s_bit_sysctrl() */
+       struct mutex pci_lock;
 
        void __iomem *bar0, *bar1;
 
@@ -320,10 +322,13 @@ static inline u32 cobalt_g_sysctrl(struct cobalt *cobalt)
 static inline void cobalt_s_bit_sysctrl(struct cobalt *cobalt,
                                        int bit, int val)
 {
-       u32 ctrl = cobalt_read_bar1(cobalt, COBALT_SYS_CTRL_BASE);
+       u32 ctrl;
 
+       mutex_lock(&cobalt->pci_lock);
+       ctrl = cobalt_read_bar1(cobalt, COBALT_SYS_CTRL_BASE);
        cobalt_write_bar1(cobalt, COBALT_SYS_CTRL_BASE,
                        (ctrl & ~(1UL << bit)) | (val << bit));
+       mutex_unlock(&cobalt->pci_lock);
 }
 
 static inline u32 cobalt_g_sysstat(struct cobalt *cobalt)