[PATCH 1/6] ASoC: topology: Constify an argument of snd_soc_tplg_component_load()
snd_soc_tplg_component_load() does not modify its "*ops" argument. It only read some values and stores it in "soc_tplg.ops".
This argument and the ops field in "struct soc_tplg" can be made const.
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- include/sound/soc-topology.h | 2 +- sound/soc/soc-topology.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/sound/soc-topology.h b/include/sound/soc-topology.h index f055c6917f6c..1eedd203ac29 100644 --- a/include/sound/soc-topology.h +++ b/include/sound/soc-topology.h @@ -178,7 +178,7 @@ static inline const void *snd_soc_tplg_get_data(struct snd_soc_tplg_hdr *hdr)
/* Dynamic Object loading and removal for component drivers */ int snd_soc_tplg_component_load(struct snd_soc_component *comp, - struct snd_soc_tplg_ops *ops, const struct firmware *fw); + const struct snd_soc_tplg_ops *ops, const struct firmware *fw); int snd_soc_tplg_component_remove(struct snd_soc_component *comp);
/* Binds event handlers to dynamic widgets */ diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index 90ca37e008b3..b00ec01361c2 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -73,7 +73,7 @@ struct soc_tplg { int bytes_ext_ops_count;
/* optional fw loading callbacks to component drivers */ - struct snd_soc_tplg_ops *ops; + const struct snd_soc_tplg_ops *ops; };
/* check we dont overflow the data for this control chunk */ @@ -2334,7 +2334,7 @@ static int soc_tplg_load(struct soc_tplg *tplg)
/* load audio component topology from "firmware" file */ int snd_soc_tplg_component_load(struct snd_soc_component *comp, - struct snd_soc_tplg_ops *ops, const struct firmware *fw) + const struct snd_soc_tplg_ops *ops, const struct firmware *fw) { struct soc_tplg tplg; int ret;
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 28046 794 0 28840 70a8 sound/soc/intel/avs/topology.o
After: text data bss dec hex filename 28206 614 0 28820 7094 sound/soc/intel/avs/topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- Compile tested-only. --- sound/soc/intel/avs/topology.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/intel/avs/topology.c b/sound/soc/intel/avs/topology.c index 02bae207f6ec..35381a835c93 100644 --- a/sound/soc/intel/avs/topology.c +++ b/sound/soc/intel/avs/topology.c @@ -1889,7 +1889,7 @@ avs_control_load(struct snd_soc_component *comp, int index, struct snd_kcontrol_ return 0; }
-static struct snd_soc_tplg_ops avs_tplg_ops = { +static const struct snd_soc_tplg_ops avs_tplg_ops = { .io_ops = avs_control_ops, .io_ops_count = ARRAY_SIZE(avs_control_ops), .control_load = avs_control_load,
On 5/13/2024 7:37 PM, Christophe JAILLET wrote:
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 28046 794 0 28840 70a8 sound/soc/intel/avs/topology.o
After: text data bss dec hex filename 28206 614 0 28820 7094 sound/soc/intel/avs/topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr
Reviewed-by: Amadeusz Sławiński amadeuszx.slawinski@linux.intel.com
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 19942 832 0 20774 5126 sound/soc/qcom/qdsp6/topology.o
After: text data bss dec hex filename 20102 652 0 20754 5112 sound/soc/qcom/qdsp6/topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- Compile tested-only. --- sound/soc/qcom/qdsp6/topology.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/qcom/qdsp6/topology.c b/sound/soc/qcom/qdsp6/topology.c index 70572c83e101..c15d1a2b6dbf 100644 --- a/sound/soc/qcom/qdsp6/topology.c +++ b/sound/soc/qcom/qdsp6/topology.c @@ -1240,7 +1240,7 @@ static const struct snd_soc_tplg_kcontrol_ops audioreach_io_ops[] = { audioreach_put_vol_ctrl_audio_mixer, snd_soc_info_volsw}, };
-static struct snd_soc_tplg_ops audioreach_tplg_ops = { +static const struct snd_soc_tplg_ops audioreach_tplg_ops = { .io_ops = audioreach_io_ops, .io_ops_count = ARRAY_SIZE(audioreach_io_ops),
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 58844 5282 56 64182 fab6 sound/soc/intel/skylake/skl-topology.o
After: text data bss dec hex filename 59004 5122 56 64182 fab6 sound/soc/intel/skylake/skl-topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- Compile tested-only. --- sound/soc/intel/skylake/skl-topology.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c index e27f0fc3d897..602ef4321122 100644 --- a/sound/soc/intel/skylake/skl-topology.c +++ b/sound/soc/intel/skylake/skl-topology.c @@ -3470,7 +3470,7 @@ static int skl_tplg_complete(struct snd_soc_component *component) return 0; }
-static struct snd_soc_tplg_ops skl_tplg_ops = { +static const struct snd_soc_tplg_ops skl_tplg_ops = { .widget_load = skl_tplg_widget_load, .control_load = skl_tplg_control_load, .bytes_ext_ops = skl_tlv_ops,
On 5/13/2024 7:37 PM, Christophe JAILLET wrote:
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 58844 5282 56 64182 fab6 sound/soc/intel/skylake/skl-topology.o
After: text data bss dec hex filename 59004 5122 56 64182 fab6 sound/soc/intel/skylake/skl-topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr
Reviewed-by: Amadeusz Sławiński amadeuszx.slawinski@linux.intel.com
Constifying "struct snd_soc_tplg_ops" moves some data to a read-only section, so increase overall security.
On a x86_64, with allmodconfig: Before: text data bss dec hex filename 44519 2888 48 47455 b95f sound/soc/sof/topology.o
After: text data bss dec hex filename 44839 2552 48 47439 b94f sound/soc/sof/topology.o
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- Compile tested-only. --- sound/soc/sof/topology.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c index da182314aa87..b54382131991 100644 --- a/sound/soc/sof/topology.c +++ b/sound/soc/sof/topology.c @@ -2278,7 +2278,7 @@ static const struct snd_soc_tplg_bytes_ext_ops sof_bytes_ext_ops[] = { {SOF_TPLG_KCTL_BYTES_VOLATILE_RO, snd_sof_bytes_ext_volatile_get}, };
-static struct snd_soc_tplg_ops sof_tplg_ops = { +static const struct snd_soc_tplg_ops sof_tplg_ops = { /* external kcontrol init - used for any driver specific init */ .control_load = sof_control_load, .control_unload = sof_control_unload, @@ -2433,7 +2433,7 @@ static int sof_dspless_link_load(struct snd_soc_component *scomp, int index, return 0; }
-static struct snd_soc_tplg_ops sof_dspless_tplg_ops = { +static const struct snd_soc_tplg_ops sof_dspless_tplg_ops = { /* external widget init - used for any driver specific init */ .widget_ready = sof_dspless_widget_ready, .widget_unload = sof_dspless_widget_unload,
Now that the soc-topology can handle "const struct snd_soc_tplg_ops" make sure that new usages of the struct already enter the tree as const.
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr --- scripts/const_structs.checkpatch | 1 + 1 file changed, 1 insertion(+)
diff --git a/scripts/const_structs.checkpatch b/scripts/const_structs.checkpatch index fa96cfd16e99..bae41780bd39 100644 --- a/scripts/const_structs.checkpatch +++ b/scripts/const_structs.checkpatch @@ -78,6 +78,7 @@ snd_rawmidi_ops snd_soc_component_driver snd_soc_dai_ops snd_soc_ops +snd_soc_tplg_ops soc_pcmcia_socket_ops stacktrace_ops sysfs_ops
On 5/13/2024 7:37 PM, Christophe JAILLET wrote:
snd_soc_tplg_component_load() does not modify its "*ops" argument. It only read some values and stores it in "soc_tplg.ops".
This argument and the ops field in "struct soc_tplg" can be made const.
Signed-off-by: Christophe JAILLET christophe.jaillet@wanadoo.fr
include/sound/soc-topology.h | 2 +- sound/soc/soc-topology.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/sound/soc-topology.h b/include/sound/soc-topology.h index f055c6917f6c..1eedd203ac29 100644 --- a/include/sound/soc-topology.h +++ b/include/sound/soc-topology.h @@ -178,7 +178,7 @@ static inline const void *snd_soc_tplg_get_data(struct snd_soc_tplg_hdr *hdr)
/* Dynamic Object loading and removal for component drivers */ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
- struct snd_soc_tplg_ops *ops, const struct firmware *fw);
const struct snd_soc_tplg_ops *ops, const struct firmware *fw); int snd_soc_tplg_component_remove(struct snd_soc_component *comp);
/* Binds event handlers to dynamic widgets */
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index 90ca37e008b3..b00ec01361c2 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -73,7 +73,7 @@ struct soc_tplg { int bytes_ext_ops_count;
/* optional fw loading callbacks to component drivers */
- struct snd_soc_tplg_ops *ops;
const struct snd_soc_tplg_ops *ops; };
/* check we dont overflow the data for this control chunk */
@@ -2334,7 +2334,7 @@ static int soc_tplg_load(struct soc_tplg *tplg)
/* load audio component topology from "firmware" file */ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
- struct snd_soc_tplg_ops *ops, const struct firmware *fw)
- const struct snd_soc_tplg_ops *ops, const struct firmware *fw) { struct soc_tplg tplg; int ret;
Yes, makes sense to me.
Reviewed-by: Amadeusz Sławiński amadeuszx.slawinski@linux.intel.com
On Mon, May 13, 2024 at 07:37:20PM +0200, Christophe JAILLET wrote:
snd_soc_tplg_component_load() does not modify its "*ops" argument. It only read some values and stores it in "soc_tplg.ops".
As mentioned in submitting-patches.rst when submitting a patch series you should supply a cover letter for that patch series which describes the overall content of the series. This helps people understand what they are looking at and how things fit together.
Le 14/05/2024 à 12:21, Mark Brown a écrit :
On Mon, May 13, 2024 at 07:37:20PM +0200, Christophe JAILLET wrote:
snd_soc_tplg_component_load() does not modify its "*ops" argument. It only read some values and stores it in "soc_tplg.ops".
As mentioned in submitting-patches.rst when submitting a patch series you should supply a cover letter for that patch series which describes the overall content of the series. This helps people understand what they are looking at and how things fit together.
Ok. I usually do, but I thought that the subjects were self-explanatory enough in this case.
Do you want me to resend?
CJ
On Sat, May 18, 2024 at 10:34:33AM +0200, Christophe JAILLET wrote:
Le 14/05/2024 à 12:21, Mark Brown a écrit :
As mentioned in submitting-patches.rst when submitting a patch series you should supply a cover letter for that patch series which describes the overall content of the series. This helps people understand what they are looking at and how things fit together.
Ok. I usually do, but I thought that the subjects were self-explanatory enough in this case.
Do you want me to resend?
It's fine this time.
On 5/20/24 08:24, Mark Brown wrote:
On Sat, May 18, 2024 at 10:34:33AM +0200, Christophe JAILLET wrote:
Le 14/05/2024 à 12:21, Mark Brown a écrit :
As mentioned in submitting-patches.rst when submitting a patch series you should supply a cover letter for that patch series which describes the overall content of the series. This helps people understand what they are looking at and how things fit together.
Ok. I usually do, but I thought that the subjects were self-explanatory enough in this case.
Do you want me to resend?
It's fine this time.
no issues with https://github.com/thesofproject/linux/pull/4993, so
Tested-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
participants (4)
-
Amadeusz Sławiński
-
Christophe JAILLET
-
Mark Brown
-
Pierre-Louis Bossart