Commit 12529aa1 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-6.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging driver fixes from Greg KH:
 "Here are two small staging driver fixes for 6.10-rc6, both for the
  vc04_services drivers:

   - build fix if CONFIG_DEBUGFS was not set

   - initialization check fix that was much reported.

  Both of these have been in linux-next this week with no reported
  issues"

* tag 'staging-6.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: vchiq_debugfs: Fix build if CONFIG_DEBUG_FS is not set
  staging: vc04_services: vchiq_arm: Fix initialisation check
parents 3e334486 fcdd7b7b
...@@ -707,7 +707,7 @@ int vchiq_initialise(struct vchiq_state *state, struct vchiq_instance **instance ...@@ -707,7 +707,7 @@ int vchiq_initialise(struct vchiq_state *state, struct vchiq_instance **instance
* block forever. * block forever.
*/ */
for (i = 0; i < VCHIQ_INIT_RETRIES; i++) { for (i = 0; i < VCHIQ_INIT_RETRIES; i++) {
if (state) if (vchiq_remote_initialised(state))
break; break;
usleep_range(500, 600); usleep_range(500, 600);
} }
...@@ -1202,7 +1202,7 @@ void vchiq_dump_platform_instances(struct vchiq_state *state, struct seq_file *f ...@@ -1202,7 +1202,7 @@ void vchiq_dump_platform_instances(struct vchiq_state *state, struct seq_file *f
{ {
int i; int i;
if (!state) if (!vchiq_remote_initialised(state))
return; return;
/* /*
......
...@@ -413,6 +413,11 @@ struct vchiq_state { ...@@ -413,6 +413,11 @@ struct vchiq_state {
struct opaque_platform_state *platform_state; struct opaque_platform_state *platform_state;
}; };
static inline bool vchiq_remote_initialised(const struct vchiq_state *state)
{
return state->remote && state->remote->initialised;
}
struct bulk_waiter { struct bulk_waiter {
struct vchiq_bulk *bulk; struct vchiq_bulk *bulk;
struct completion event; struct completion event;
......
...@@ -138,7 +138,7 @@ void vchiq_debugfs_deinit(void) ...@@ -138,7 +138,7 @@ void vchiq_debugfs_deinit(void)
#else /* CONFIG_DEBUG_FS */ #else /* CONFIG_DEBUG_FS */
void vchiq_debugfs_init(void) void vchiq_debugfs_init(struct vchiq_state *state)
{ {
} }
......
...@@ -1170,6 +1170,11 @@ static int vchiq_open(struct inode *inode, struct file *file) ...@@ -1170,6 +1170,11 @@ static int vchiq_open(struct inode *inode, struct file *file)
dev_dbg(state->dev, "arm: vchiq open\n"); dev_dbg(state->dev, "arm: vchiq open\n");
if (!vchiq_remote_initialised(state)) {
dev_dbg(state->dev, "arm: vchiq has no connection to VideoCore\n");
return -ENOTCONN;
}
instance = kzalloc(sizeof(*instance), GFP_KERNEL); instance = kzalloc(sizeof(*instance), GFP_KERNEL);
if (!instance) if (!instance)
return -ENOMEM; return -ENOMEM;
...@@ -1200,7 +1205,7 @@ static int vchiq_release(struct inode *inode, struct file *file) ...@@ -1200,7 +1205,7 @@ static int vchiq_release(struct inode *inode, struct file *file)
dev_dbg(state->dev, "arm: instance=%p\n", instance); dev_dbg(state->dev, "arm: instance=%p\n", instance);
if (!state) { if (!vchiq_remote_initialised(state)) {
ret = -EPERM; ret = -EPERM;
goto out; goto out;
} }
......
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