Commit 5b6e80cc authored by Todd Poynor's avatar Todd Poynor Committed by Greg Kroah-Hartman

staging: gasket: core: hold reference on device while in use

Hold a reference on the struct device while a pointer to that
device is in use by gasket.
Reported-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarTodd Poynor <toddpoynor@google.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6caa5841
...@@ -448,7 +448,7 @@ static int gasket_alloc_dev( ...@@ -448,7 +448,7 @@ static int gasket_alloc_dev(
gasket_dev->internal_desc = internal_desc; gasket_dev->internal_desc = internal_desc;
gasket_dev->dev_idx = dev_idx; gasket_dev->dev_idx = dev_idx;
snprintf(gasket_dev->kobj_name, GASKET_NAME_MAX, "%s", kobj_name); snprintf(gasket_dev->kobj_name, GASKET_NAME_MAX, "%s", kobj_name);
gasket_dev->dev = parent; gasket_dev->dev = get_device(parent);
/* gasket_bar_data is uninitialized. */ /* gasket_bar_data is uninitialized. */
gasket_dev->num_page_tables = driver_desc->num_page_tables; gasket_dev->num_page_tables = driver_desc->num_page_tables;
/* max_page_table_size and *page table are uninit'ed */ /* max_page_table_size and *page table are uninit'ed */
...@@ -487,7 +487,7 @@ static void gasket_free_dev(struct gasket_dev *gasket_dev) ...@@ -487,7 +487,7 @@ static void gasket_free_dev(struct gasket_dev *gasket_dev)
mutex_lock(&internal_desc->mutex); mutex_lock(&internal_desc->mutex);
internal_desc->devs[gasket_dev->dev_idx] = NULL; internal_desc->devs[gasket_dev->dev_idx] = NULL;
mutex_unlock(&internal_desc->mutex); mutex_unlock(&internal_desc->mutex);
put_device(gasket_dev->dev);
kfree(gasket_dev); kfree(gasket_dev);
} }
......
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