media: atomisp: get rid of a string_support.h abstraction layer
Some parts of the driver have their own implementation of memcpy() & friends. Replace all of them by strscpy(). Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
48b532b9d2
commit
662fb4fceb
|
@ -1,165 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* Support for Intel Camera Imaging ISP subsystem.
|
|
||||||
* Copyright (c) 2015, Intel Corporation.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms and conditions of the GNU General Public License,
|
|
||||||
* version 2, as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
||||||
* more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __STRING_SUPPORT_H_INCLUDED__
|
|
||||||
#define __STRING_SUPPORT_H_INCLUDED__
|
|
||||||
#include <platform_support.h>
|
|
||||||
#include <type_support.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For all non microsoft cases, we need the following functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* @brief Copy from src_buf to dest_buf.
|
|
||||||
*
|
|
||||||
* @param[out] dest_buf. Destination buffer to copy to
|
|
||||||
* @param[in] dest_size. The size of the destination buffer in bytes
|
|
||||||
* @param[in] src_buf. The source buffer
|
|
||||||
* @param[in] src_size. The size of the source buffer in bytes
|
|
||||||
* @return 0 on success, error code on failure
|
|
||||||
* @return -EINVAL on Invalid arguments
|
|
||||||
* @return ERANGE on Destination size too small
|
|
||||||
*/
|
|
||||||
static inline int memcpy_s(
|
|
||||||
void *dest_buf,
|
|
||||||
size_t dest_size,
|
|
||||||
const void *src_buf,
|
|
||||||
size_t src_size)
|
|
||||||
{
|
|
||||||
if ((!src_buf) || (!dest_buf)) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((dest_size < src_size) || (src_size == 0)) {
|
|
||||||
/* Destination too small*/
|
|
||||||
return ERANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(dest_buf, src_buf, src_size);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @brief Get the length of the string, excluding the null terminator
|
|
||||||
*
|
|
||||||
* @param[in] src_str. The source string
|
|
||||||
* @param[in] max_len. Look only for max_len bytes in the string
|
|
||||||
* @return Return the string length excluding null character
|
|
||||||
* @return Return max_len if no null character in the first max_len bytes
|
|
||||||
* @return Returns 0 if src_str is NULL
|
|
||||||
*/
|
|
||||||
static size_t strnlen_s(
|
|
||||||
const char *src_str,
|
|
||||||
size_t max_len)
|
|
||||||
{
|
|
||||||
size_t ix;
|
|
||||||
|
|
||||||
if (!src_str) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ix = 0; ix < max_len && src_str[ix] != '\0'; ix++)
|
|
||||||
;
|
|
||||||
|
|
||||||
/* On Error, it will return src_size == max_len*/
|
|
||||||
return ix;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @brief Copy string from src_str to dest_str
|
|
||||||
*
|
|
||||||
* @param[out] dest_str. Destination buffer to copy to
|
|
||||||
* @param[in] dest_size. The size of the destination buffer in bytes
|
|
||||||
* @param[in] src_str. The source buffer
|
|
||||||
* @param[in] src_size. The size of the source buffer in bytes
|
|
||||||
* @return Returns 0 on success
|
|
||||||
* @return Returns -EINVAL on invalid arguments
|
|
||||||
* @return Returns ERANGE on destination size too small
|
|
||||||
*/
|
|
||||||
static inline int strncpy_s(
|
|
||||||
char *dest_str,
|
|
||||||
size_t dest_size,
|
|
||||||
const char *src_str,
|
|
||||||
size_t src_size)
|
|
||||||
{
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if (!dest_str) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!src_str) || (dest_size == 0)) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
dest_str[0] = '\0';
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
len = strnlen_s(src_str, src_size);
|
|
||||||
|
|
||||||
if (len >= dest_size) {
|
|
||||||
/* Destination too small*/
|
|
||||||
dest_str[0] = '\0';
|
|
||||||
return ERANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* dest_str is big enough for the len */
|
|
||||||
strncpy(dest_str, src_str, len);
|
|
||||||
dest_str[len] = '\0';
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @brief Copy string from src_str to dest_str
|
|
||||||
*
|
|
||||||
* @param[out] dest_str. Destination buffer to copy to
|
|
||||||
* @param[in] dest_size. The size of the destination buffer in bytes
|
|
||||||
* @param[in] src_str. The source buffer
|
|
||||||
* @return Returns 0 on success
|
|
||||||
* @return Returns -EINVAL on invalid arguments
|
|
||||||
* @return Returns ERANGE on destination size too small
|
|
||||||
*/
|
|
||||||
static inline int strcpy_s(
|
|
||||||
char *dest_str,
|
|
||||||
size_t dest_size,
|
|
||||||
const char *src_str)
|
|
||||||
{
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if (!dest_str) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!src_str) || (dest_size == 0)) {
|
|
||||||
/* Invalid arguments*/
|
|
||||||
dest_str[0] = '\0';
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
len = strnlen_s(src_str, dest_size);
|
|
||||||
|
|
||||||
if (len >= dest_size) {
|
|
||||||
/* Destination too small*/
|
|
||||||
dest_str[0] = '\0';
|
|
||||||
return ERANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* dest_str is big enough for the len */
|
|
||||||
strncpy(dest_str, src_str, len);
|
|
||||||
dest_str[len] = '\0';
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* __STRING_SUPPORT_H_INCLUDED__ */
|
|
|
@ -13,8 +13,9 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
|
|
||||||
#include <type_support.h>
|
#include <type_support.h>
|
||||||
#include <string_support.h> /* memcpy */
|
|
||||||
#include "system_global.h"
|
#include "system_global.h"
|
||||||
#include "vamem.h"
|
#include "vamem.h"
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
|
|
|
@ -13,8 +13,9 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
|
|
||||||
#include <type_support.h>
|
#include <type_support.h>
|
||||||
#include <string_support.h> /* memcpy */
|
|
||||||
#include "system_global.h"
|
#include "system_global.h"
|
||||||
#include "vamem.h"
|
#include "vamem.h"
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
|
|
|
@ -13,8 +13,9 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
|
|
||||||
#include <type_support.h>
|
#include <type_support.h>
|
||||||
#include <string_support.h> /* memcpy */
|
|
||||||
#include "system_global.h"
|
#include "system_global.h"
|
||||||
#include "vamem.h"
|
#include "vamem.h"
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
|
|
|
@ -13,8 +13,9 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
|
|
||||||
#include <type_support.h>
|
#include <type_support.h>
|
||||||
#include <string_support.h> /* memcpy */
|
|
||||||
#include "system_global.h"
|
#include "system_global.h"
|
||||||
#include "vamem.h"
|
#include "vamem.h"
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
#define __INLINE_STREAM2MMIO__
|
#define __INLINE_STREAM2MMIO__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for strscpy() */
|
||||||
|
|
||||||
#include "ia_css_debug.h"
|
#include "ia_css_debug.h"
|
||||||
#include "ia_css_debug_pipe.h"
|
#include "ia_css_debug_pipe.h"
|
||||||
#include "ia_css_irq.h"
|
#include "ia_css_irq.h"
|
||||||
|
@ -47,7 +49,6 @@
|
||||||
#include "system_local.h"
|
#include "system_local.h"
|
||||||
#include "assert_support.h"
|
#include "assert_support.h"
|
||||||
#include "print_support.h"
|
#include "print_support.h"
|
||||||
#include "string_support.h"
|
|
||||||
|
|
||||||
#include "fifo_monitor.h"
|
#include "fifo_monitor.h"
|
||||||
|
|
||||||
|
@ -2769,8 +2770,9 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
stage->binary->info->blob->name, stage->stage_num);
|
stage->binary->info->blob->name, stage->stage_num);
|
||||||
} else if (stage->firmware) {
|
} else if (stage->firmware) {
|
||||||
bin_type = "firmware";
|
bin_type = "firmware";
|
||||||
strncpy_s(blob_name, sizeof(blob_name),
|
|
||||||
IA_CSS_EXT_ISP_PROG_NAME(stage->firmware), sizeof(blob_name));
|
strscpy(blob_name, IA_CSS_EXT_ISP_PROG_NAME(stage->firmware),
|
||||||
|
sizeof(blob_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Guard in case of binaries that don't have any binary_info */
|
/* Guard in case of binaries that don't have any binary_info */
|
||||||
|
@ -2836,10 +2838,8 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
while (ei[p] != ',')
|
while (ei[p] != ',')
|
||||||
p--;
|
p--;
|
||||||
/* Last comma found, copy till that comma */
|
/* Last comma found, copy till that comma */
|
||||||
strncpy_s(enable_info1,
|
strscpy(enable_info1, ei,
|
||||||
sizeof(enable_info1),
|
p > sizeof(enable_info1) ? sizeof(enable_info1) : p);
|
||||||
ei, p);
|
|
||||||
enable_info1[p] = '\0';
|
|
||||||
|
|
||||||
ei += p + 1;
|
ei += p + 1;
|
||||||
l = strlen(ei);
|
l = strlen(ei);
|
||||||
|
@ -2849,10 +2849,10 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
/* we cannot use ei as argument because
|
/* we cannot use ei as argument because
|
||||||
* it is not guaranteed dword aligned
|
* it is not guaranteed dword aligned
|
||||||
*/
|
*/
|
||||||
strncpy_s(enable_info2,
|
|
||||||
sizeof(enable_info2),
|
strscpy(enable_info2, ei,
|
||||||
ei, l);
|
l > sizeof(enable_info2) ? sizeof(enable_info2) : l);
|
||||||
enable_info2[l] = '\0';
|
|
||||||
snprintf(enable_info, sizeof(enable_info), "%s\\n%s",
|
snprintf(enable_info, sizeof(enable_info), "%s\\n%s",
|
||||||
enable_info1, enable_info2);
|
enable_info1, enable_info2);
|
||||||
|
|
||||||
|
@ -2861,10 +2861,10 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
p = ENABLE_LINE_MAX_LENGTH;
|
p = ENABLE_LINE_MAX_LENGTH;
|
||||||
while (ei[p] != ',')
|
while (ei[p] != ',')
|
||||||
p--;
|
p--;
|
||||||
strncpy_s(enable_info2,
|
|
||||||
sizeof(enable_info2),
|
strscpy(enable_info2, ei,
|
||||||
ei, p);
|
p > sizeof(enable_info2) ? sizeof(enable_info2) : p);
|
||||||
enable_info2[p] = '\0';
|
|
||||||
ei += p + 1;
|
ei += p + 1;
|
||||||
l = strlen(ei);
|
l = strlen(ei);
|
||||||
|
|
||||||
|
@ -2873,9 +2873,8 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
/* we cannot use ei as argument because
|
/* we cannot use ei as argument because
|
||||||
* it is not guaranteed dword aligned
|
* it is not guaranteed dword aligned
|
||||||
*/
|
*/
|
||||||
strcpy_s(enable_info3,
|
strscpy(enable_info3, ei,
|
||||||
sizeof(enable_info3), ei);
|
sizeof(enable_info3));
|
||||||
enable_info3[l] = '\0';
|
|
||||||
snprintf(enable_info, sizeof(enable_info),
|
snprintf(enable_info, sizeof(enable_info),
|
||||||
"%s\\n%s\\n%s",
|
"%s\\n%s\\n%s",
|
||||||
enable_info1, enable_info2,
|
enable_info1, enable_info2,
|
||||||
|
@ -2885,13 +2884,11 @@ ia_css_debug_pipe_graph_dump_stage(
|
||||||
p = ENABLE_LINE_MAX_LENGTH;
|
p = ENABLE_LINE_MAX_LENGTH;
|
||||||
while (ei[p] != ',')
|
while (ei[p] != ',')
|
||||||
p--;
|
p--;
|
||||||
strncpy_s(enable_info3,
|
strscpy(enable_info3, ei,
|
||||||
sizeof(enable_info3),
|
p > sizeof(enable_info3) ? sizeof(enable_info3) : p);
|
||||||
ei, p);
|
|
||||||
enable_info3[p] = '\0';
|
|
||||||
ei += p + 1;
|
ei += p + 1;
|
||||||
strcpy_s(enable_info3,
|
strscpy(enable_info3, ei,
|
||||||
sizeof(enable_info3), ei);
|
sizeof(enable_info3));
|
||||||
snprintf(enable_info, sizeof(enable_info),
|
snprintf(enable_info, sizeof(enable_info),
|
||||||
"%s\\n%s\\n%s",
|
"%s\\n%s\\n%s",
|
||||||
enable_info1, enable_info2,
|
enable_info1, enable_info2,
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
|
|
||||||
#include "system_global.h"
|
#include "system_global.h"
|
||||||
|
|
||||||
#ifdef USE_INPUT_SYSTEM_VERSION_2401
|
#ifdef USE_INPUT_SYSTEM_VERSION_2401
|
||||||
|
@ -20,7 +22,6 @@
|
||||||
#include "ia_css_isys.h"
|
#include "ia_css_isys.h"
|
||||||
#include "ia_css_debug.h"
|
#include "ia_css_debug.h"
|
||||||
#include "math_support.h"
|
#include "math_support.h"
|
||||||
#include "string_support.h"
|
|
||||||
#include "virtual_isys.h"
|
#include "virtual_isys.h"
|
||||||
#include "isp.h"
|
#include "isp.h"
|
||||||
#include "sh_css_defs.h"
|
#include "sh_css_defs.h"
|
||||||
|
@ -650,14 +651,8 @@ static bool calculate_tpg_cfg(
|
||||||
input_system_cfg_t *isys_cfg,
|
input_system_cfg_t *isys_cfg,
|
||||||
pixelgen_tpg_cfg_t *cfg)
|
pixelgen_tpg_cfg_t *cfg)
|
||||||
{
|
{
|
||||||
(void)channel;
|
memcpy(cfg, &isys_cfg->tpg_port_attr, sizeof(pixelgen_tpg_cfg_t));
|
||||||
(void)input_port;
|
|
||||||
|
|
||||||
memcpy_s(
|
|
||||||
(void *)cfg,
|
|
||||||
sizeof(pixelgen_tpg_cfg_t),
|
|
||||||
(void *)(&isys_cfg->tpg_port_attr),
|
|
||||||
sizeof(pixelgen_tpg_cfg_t));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -667,14 +662,8 @@ static bool calculate_prbs_cfg(
|
||||||
input_system_cfg_t *isys_cfg,
|
input_system_cfg_t *isys_cfg,
|
||||||
pixelgen_prbs_cfg_t *cfg)
|
pixelgen_prbs_cfg_t *cfg)
|
||||||
{
|
{
|
||||||
(void)channel;
|
memcpy(cfg, &isys_cfg->prbs_port_attr, sizeof(pixelgen_prbs_cfg_t));
|
||||||
(void)input_port;
|
|
||||||
|
|
||||||
memcpy_s(
|
|
||||||
(void *)cfg,
|
|
||||||
sizeof(pixelgen_prbs_cfg_t),
|
|
||||||
(void *)(&isys_cfg->prbs_port_attr),
|
|
||||||
sizeof(pixelgen_prbs_cfg_t));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -692,12 +681,10 @@ static bool calculate_be_cfg(
|
||||||
bool metadata,
|
bool metadata,
|
||||||
csi_rx_backend_cfg_t *cfg)
|
csi_rx_backend_cfg_t *cfg)
|
||||||
{
|
{
|
||||||
memcpy_s(
|
memcpy(&cfg->lut_entry,
|
||||||
(void *)(&cfg->lut_entry),
|
metadata ? &input_port->metadata.backend_lut_entry :
|
||||||
sizeof(csi_rx_backend_lut_entry_t),
|
&input_port->csi_rx.backend_lut_entry,
|
||||||
metadata ? (void *)(&input_port->metadata.backend_lut_entry) :
|
sizeof(csi_rx_backend_lut_entry_t));
|
||||||
(void *)(&input_port->csi_rx.backend_lut_entry),
|
|
||||||
sizeof(csi_rx_backend_lut_entry_t));
|
|
||||||
|
|
||||||
cfg->csi_mipi_cfg.virtual_channel = isys_cfg->csi_port_attr.ch_id;
|
cfg->csi_mipi_cfg.virtual_channel = isys_cfg->csi_port_attr.ch_id;
|
||||||
if (metadata) {
|
if (metadata) {
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/string.h> /* for memcpy() */
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
|
||||||
|
@ -28,7 +29,6 @@
|
||||||
#include "ia_css_isp_param.h"
|
#include "ia_css_isp_param.h"
|
||||||
|
|
||||||
#include "assert_support.h"
|
#include "assert_support.h"
|
||||||
#include "string_support.h"
|
|
||||||
|
|
||||||
#include "isp.h" /* PMEM_WIDTH_LOG2 */
|
#include "isp.h" /* PMEM_WIDTH_LOG2 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue