Commit 315a1a20 authored by Ivan Gomez Castellanos's avatar Ivan Gomez Castellanos Committed by Greg Kroah-Hartman

staging: tidspbridge: Remove cfg_get_exec_file()

As the services directory is going to be removed, the cfg_get_exec_file
function has also to be removed.

This patch also avoids a possible NULL pointer dereference in function
cfg_get_exec_file(), when drv_datap is checked for NULL and then pass
drv_datap->base_img as argument to strlen().
Signed-off-by: default avatarIvan Gomez Castellanos <ivan.gomez@ti.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e8184e6c
...@@ -40,28 +40,6 @@ ...@@ -40,28 +40,6 @@
*/ */
extern int cfg_get_cd_version(u32 *version); extern int cfg_get_cd_version(u32 *version);
/*
* ======== cfg_get_exec_file ========
* Purpose:
* Retreive the default executable, if any, for this board.
* Parameters:
* dev_node_obj: Handle to the dev_node who's driver we are querying.
* buf_size: Size of buffer.
* str_exec_file: Ptr to character buf to hold ExecFile.
* Returns:
* 0: Success.
* -EFAULT: dev_node_obj is invalid or str_exec_file is invalid.
* -ENODATA: The resource is not available.
* Requires:
* CFG initialized.
* Ensures:
* 0: Not more than buf_size bytes were copied into str_exec_file,
* and *str_exec_file contains default executable for this
* devnode.
*/
extern int cfg_get_exec_file(struct cfg_devnode *dev_node_obj,
u32 buf_size, char *str_exec_file);
/* /*
* ======== cfg_get_object ======== * ======== cfg_get_object ========
* Purpose: * Purpose:
......
...@@ -393,18 +393,29 @@ static int get_exec_file(struct cfg_devnode *dev_node_obj, ...@@ -393,18 +393,29 @@ static int get_exec_file(struct cfg_devnode *dev_node_obj,
{ {
u8 dev_type; u8 dev_type;
s32 len; s32 len;
struct drv_data *drv_datap = dev_get_drvdata(bridge);
dev_get_dev_type(hdev_obj, (u8 *) &dev_type); dev_get_dev_type(hdev_obj, (u8 *) &dev_type);
if (!exec_file)
return -EFAULT;
if (dev_type == DSP_UNIT) { if (dev_type == DSP_UNIT) {
return cfg_get_exec_file(dev_node_obj, size, exec_file); if (!drv_datap || !drv_datap->base_img)
} else if (dev_type == IVA_UNIT) { return -EFAULT;
if (iva_img) {
len = strlen(iva_img); if (strlen(drv_datap->base_img) > size)
strncpy(exec_file, iva_img, len + 1); return -EINVAL;
return 0;
} strcpy(exec_file, drv_datap->base_img);
} else if (dev_type == IVA_UNIT && iva_img) {
len = strlen(iva_img);
strncpy(exec_file, iva_img, len + 1);
} else {
return -ENOENT;
} }
return -ENOENT;
return 0;
} }
/* /*
......
...@@ -30,37 +30,6 @@ ...@@ -30,37 +30,6 @@
#include <dspbridge/cfg.h> #include <dspbridge/cfg.h>
#include <dspbridge/drv.h> #include <dspbridge/drv.h>
/*
* ======== cfg_get_exec_file ========
* Purpose:
* Retreive the default executable, if any, for this board.
*/
int cfg_get_exec_file(struct cfg_devnode *dev_node_obj, u32 buf_size,
char *str_exec_file)
{
int status = 0;
struct drv_data *drv_datap = dev_get_drvdata(bridge);
if (!dev_node_obj)
status = -EFAULT;
else if (!str_exec_file || !drv_datap)
status = -EFAULT;
if (strlen(drv_datap->base_img) > buf_size)
status = -EINVAL;
if (!status && drv_datap->base_img)
strcpy(str_exec_file, drv_datap->base_img);
if (status)
pr_err("%s: Failed, status 0x%x\n", __func__, status);
DBC_ENSURE(((status == 0) &&
(strlen(str_exec_file) <= buf_size))
|| (status != 0));
return status;
}
/* /*
* ======== cfg_get_object ======== * ======== cfg_get_object ========
* Purpose: * Purpose:
......
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