diff mbox

[v2,02/15] usb: gadget: make config_item_type structures const

Message ID 1508167134-6243-3-git-send-email-bhumirks@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bhumika Goyal Oct. 16, 2017, 3:18 p.m. UTC
Make these structures const as they are only passed to the const
argument of the functions config_{group/item}_init_type_name.

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
---
* Changes in v2- Combine all the followup patches and the constification
patches into a series.

 drivers/usb/gadget/function/f_acm.c          |  2 +-
 drivers/usb/gadget/function/f_ecm.c          |  2 +-
 drivers/usb/gadget/function/f_eem.c          |  2 +-
 drivers/usb/gadget/function/f_fs.c           |  2 +-
 drivers/usb/gadget/function/f_hid.c          |  2 +-
 drivers/usb/gadget/function/f_loopback.c     |  2 +-
 drivers/usb/gadget/function/f_mass_storage.c |  4 +--
 drivers/usb/gadget/function/f_midi.c         |  2 +-
 drivers/usb/gadget/function/f_ncm.c          |  2 +-
 drivers/usb/gadget/function/f_obex.c         |  2 +-
 drivers/usb/gadget/function/f_phonet.c       |  2 +-
 drivers/usb/gadget/function/f_printer.c      |  2 +-
 drivers/usb/gadget/function/f_rndis.c        |  2 +-
 drivers/usb/gadget/function/f_serial.c       |  2 +-
 drivers/usb/gadget/function/f_sourcesink.c   |  2 +-
 drivers/usb/gadget/function/f_subset.c       |  2 +-
 drivers/usb/gadget/function/f_tcm.c          |  2 +-
 drivers/usb/gadget/function/f_uac1.c         |  2 +-
 drivers/usb/gadget/function/f_uac1_legacy.c  |  2 +-
 drivers/usb/gadget/function/f_uac2.c         |  2 +-
 drivers/usb/gadget/function/uvc_configfs.c   | 50 ++++++++++++++--------------
 21 files changed, 46 insertions(+), 46 deletions(-)

Comments

Felipe Balbi Oct. 17, 2017, 8:30 a.m. UTC | #1
Hi,

Bhumika Goyal <bhumirks@gmail.com> writes:
> Make these structures const as they are only passed to the const
> argument of the functions config_{group/item}_init_type_name.
>
> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
> ---
> * Changes in v2- Combine all the followup patches and the constification
> patches into a series.

I'm assuming this depends on patch 1 of the series. In that case:

Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Laurent Pinchart Oct. 18, 2017, 4:05 p.m. UTC | #2
Hi Bhumika,

Thank you for the patch.

On Monday, 16 October 2017 18:18:41 EEST Bhumika Goyal wrote:
> Make these structures const as they are only passed to the const
> argument of the functions config_{group/item}_init_type_name.
> 
> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
> ---
> * Changes in v2- Combine all the followup patches and the constification
> patches into a series.
> 
>  drivers/usb/gadget/function/f_acm.c          |  2 +-
>  drivers/usb/gadget/function/f_ecm.c          |  2 +-
>  drivers/usb/gadget/function/f_eem.c          |  2 +-
>  drivers/usb/gadget/function/f_fs.c           |  2 +-
>  drivers/usb/gadget/function/f_hid.c          |  2 +-
>  drivers/usb/gadget/function/f_loopback.c     |  2 +-
>  drivers/usb/gadget/function/f_mass_storage.c |  4 +--
>  drivers/usb/gadget/function/f_midi.c         |  2 +-
>  drivers/usb/gadget/function/f_ncm.c          |  2 +-
>  drivers/usb/gadget/function/f_obex.c         |  2 +-
>  drivers/usb/gadget/function/f_phonet.c       |  2 +-
>  drivers/usb/gadget/function/f_printer.c      |  2 +-
>  drivers/usb/gadget/function/f_rndis.c        |  2 +-
>  drivers/usb/gadget/function/f_serial.c       |  2 +-
>  drivers/usb/gadget/function/f_sourcesink.c   |  2 +-
>  drivers/usb/gadget/function/f_subset.c       |  2 +-
>  drivers/usb/gadget/function/f_tcm.c          |  2 +-
>  drivers/usb/gadget/function/f_uac1.c         |  2 +-
>  drivers/usb/gadget/function/f_uac1_legacy.c  |  2 +-
>  drivers/usb/gadget/function/f_uac2.c         |  2 +-
>  drivers/usb/gadget/function/uvc_configfs.c   | 50 ++++++++++++------------
>  21 files changed, 46 insertions(+), 46 deletions(-)

[snip]

> diff --git a/drivers/usb/gadget/function/uvc_configfs.c
> b/drivers/usb/gadget/function/uvc_configfs.c index 844cb73..f76619f 100644
> --- a/drivers/usb/gadget/function/uvc_configfs.c
> +++ b/drivers/usb/gadget/function/uvc_configfs.c
> @@ -127,7 +127,7 @@ static struct uvcg_control_header
> *to_uvcg_control_header(struct config_item *it NULL,
>  };
> 
> -static struct config_item_type uvcg_control_header_type = {
> +static const struct config_item_type uvcg_control_header_type = {
>  	.ct_attrs	= uvcg_control_header_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -170,7 +170,7 @@ static void uvcg_control_header_drop(struct config_group
> *group, .drop_item		= uvcg_control_header_drop,
>  };
> 
> -static struct config_item_type uvcg_control_header_grp_type = {
> +static const struct config_item_type uvcg_control_header_grp_type = {
>  	.ct_group_ops	= &uvcg_control_header_grp_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -265,7 +265,7 @@ static ssize_t uvcg_default_processing_bm_controls_show(
> NULL,
>  };
> 
> -static struct config_item_type uvcg_default_processing_type = {
> +static const struct config_item_type uvcg_default_processing_type = {
>  	.ct_attrs	= uvcg_default_processing_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -277,7 +277,7 @@ static ssize_t uvcg_default_processing_bm_controls_show(
> struct config_group	group;
>  } uvcg_processing_grp;
> 
> -static struct config_item_type uvcg_processing_grp_type = {
> +static const struct config_item_type uvcg_processing_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -382,7 +382,7 @@ static ssize_t uvcg_default_camera_bm_controls_show(
>  	NULL,
>  };
> 
> -static struct config_item_type uvcg_default_camera_type = {
> +static const struct config_item_type uvcg_default_camera_type = {
>  	.ct_attrs	= uvcg_default_camera_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -394,7 +394,7 @@ static ssize_t uvcg_default_camera_bm_controls_show(
>  	struct config_group	group;
>  } uvcg_camera_grp;
> 
> -static struct config_item_type uvcg_camera_grp_type = {
> +static const struct config_item_type uvcg_camera_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -460,7 +460,7 @@ static ssize_t uvcg_default_camera_bm_controls_show(
>  	NULL,
>  };
> 
> -static struct config_item_type uvcg_default_output_type = {
> +static const struct config_item_type uvcg_default_output_type = {
>  	.ct_attrs	= uvcg_default_output_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -472,7 +472,7 @@ static ssize_t uvcg_default_camera_bm_controls_show(
>  	struct config_group	group;
>  } uvcg_output_grp;
> 
> -static struct config_item_type uvcg_output_grp_type = {
> +static const struct config_item_type uvcg_output_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -481,7 +481,7 @@ static ssize_t uvcg_default_camera_bm_controls_show(
>  	struct config_group	group;
>  } uvcg_terminal_grp;
> 
> -static struct config_item_type uvcg_terminal_grp_type = {
> +static const struct config_item_type uvcg_terminal_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -586,7 +586,7 @@ static void uvcg_control_class_drop_link(struct
> config_item *src, .drop_link	= uvcg_control_class_drop_link,
>  };
> 
> -static struct config_item_type uvcg_control_class_type = {
> +static const struct config_item_type uvcg_control_class_type = {
>  	.ct_item_ops	= &uvcg_control_class_item_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -596,7 +596,7 @@ static void uvcg_control_class_drop_link(struct
> config_item *src, struct config_group	group;
>  } uvcg_control_class_grp;
> 
> -static struct config_item_type uvcg_control_class_grp_type = {
> +static const struct config_item_type uvcg_control_class_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -605,7 +605,7 @@ static void uvcg_control_class_drop_link(struct
> config_item *src, struct config_group	group;
>  } uvcg_control_grp;
> 
> -static struct config_item_type uvcg_control_grp_type = {
> +static const struct config_item_type uvcg_control_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -857,7 +857,7 @@ static void uvcg_streaming_header_drop_link(struct
> config_item *src, NULL,
>  };
> 
> -static struct config_item_type uvcg_streaming_header_type = {
> +static const struct config_item_type uvcg_streaming_header_type = {
>  	.ct_item_ops	= &uvcg_streaming_header_item_ops,
>  	.ct_attrs	= uvcg_streaming_header_attrs,
>  	.ct_owner	= THIS_MODULE,
> @@ -901,7 +901,7 @@ static void uvcg_streaming_header_drop(struct
> config_group *group, .drop_item		= uvcg_streaming_header_drop,
>  };
> 
> -static struct config_item_type uvcg_streaming_header_grp_type = {
> +static const struct config_item_type uvcg_streaming_header_grp_type = {
>  	.ct_group_ops	= &uvcg_streaming_header_grp_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -1150,7 +1150,7 @@ static ssize_t
> uvcg_frame_dw_frame_interval_store(struct config_item *item, NULL,
>  };
> 
> -static struct config_item_type uvcg_frame_type = {
> +static const struct config_item_type uvcg_frame_type = {
>  	.ct_attrs	= uvcg_frame_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -1419,7 +1419,7 @@ static ssize_t
> uvcg_uncompressed_guid_format_store(struct config_item *item, NULL,
>  };
> 
> -static struct config_item_type uvcg_uncompressed_type = {
> +static const struct config_item_type uvcg_uncompressed_type = {
>  	.ct_group_ops	= &uvcg_uncompressed_group_ops,
>  	.ct_attrs	= uvcg_uncompressed_attrs,
>  	.ct_owner	= THIS_MODULE,
> @@ -1469,7 +1469,7 @@ static void uvcg_uncompressed_drop(struct config_group
> *group, .drop_item		= uvcg_uncompressed_drop,
>  };
> 
> -static struct config_item_type uvcg_uncompressed_grp_type = {
> +static const struct config_item_type uvcg_uncompressed_grp_type = {
>  	.ct_group_ops	= &uvcg_uncompressed_grp_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -1619,7 +1619,7 @@ static struct uvcg_mjpeg *to_uvcg_mjpeg(struct
> config_item *item) NULL,
>  };
> 
> -static struct config_item_type uvcg_mjpeg_type = {
> +static const struct config_item_type uvcg_mjpeg_type = {
>  	.ct_group_ops	= &uvcg_mjpeg_group_ops,
>  	.ct_attrs	= uvcg_mjpeg_attrs,
>  	.ct_owner	= THIS_MODULE,
> @@ -1663,7 +1663,7 @@ static void uvcg_mjpeg_drop(struct config_group
> *group, .drop_item		= uvcg_mjpeg_drop,
>  };
> 
> -static struct config_item_type uvcg_mjpeg_grp_type = {
> +static const struct config_item_type uvcg_mjpeg_grp_type = {
>  	.ct_group_ops	= &uvcg_mjpeg_grp_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -1728,7 +1728,7 @@ static void uvcg_mjpeg_drop(struct config_group
> *group, NULL,
>  };
> 
> -static struct config_item_type uvcg_default_color_matching_type = {
> +static const struct config_item_type uvcg_default_color_matching_type = {
>  	.ct_attrs	= uvcg_default_color_matching_attrs,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -1740,7 +1740,7 @@ static void uvcg_mjpeg_drop(struct config_group
> *group, struct config_group	group;
>  } uvcg_color_matching_grp;
> 
> -static struct config_item_type uvcg_color_matching_grp_type = {
> +static const struct config_item_type uvcg_color_matching_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -2085,7 +2085,7 @@ static void uvcg_streaming_class_drop_link(struct
> config_item *src, .drop_link	= uvcg_streaming_class_drop_link,
>  };
> 
> -static struct config_item_type uvcg_streaming_class_type = {
> +static const struct config_item_type uvcg_streaming_class_type = {
>  	.ct_item_ops	= &uvcg_streaming_class_item_ops,
>  	.ct_owner	= THIS_MODULE,
>  };
> @@ -2095,7 +2095,7 @@ static void uvcg_streaming_class_drop_link(struct
> config_item *src, struct config_group	group;
>  } uvcg_streaming_class_grp;
> 
> -static struct config_item_type uvcg_streaming_class_grp_type = {
> +static const struct config_item_type uvcg_streaming_class_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };
> 
> @@ -2104,7 +2104,7 @@ static void uvcg_streaming_class_drop_link(struct
> config_item *src, struct config_group	group;
>  } uvcg_streaming_grp;
> 
> -static struct config_item_type uvcg_streaming_grp_type = {
> +static const struct config_item_type uvcg_streaming_grp_type = {
>  	.ct_owner = THIS_MODULE,
>  };

Now we have 9 const instances of the config_item_type structure that are 
identical, with only the .ct_owner field set. Should they be all merged into a 
single structure ?

> @@ -2190,7 +2190,7 @@ static void uvc_attr_release(struct config_item *item)
> NULL,
>  };
> 
> -static struct config_item_type uvc_func_type = {
> +static const struct config_item_type uvc_func_type = {
>  	.ct_item_ops	= &uvc_item_ops,
>  	.ct_attrs	= uvc_attrs,
>  	.ct_owner	= THIS_MODULE,
Christoph Hellwig Oct. 19, 2017, 2:06 p.m. UTC | #3
> 
> Now we have 9 const instances of the config_item_type structure that are 
> identical, with only the .ct_owner field set. Should they be all merged into a 
> single structure ?

I think that's a good idea.

But I'm about to slurp up this whole series into my tree, how about making
that an incremental patch?  
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laurent Pinchart Oct. 19, 2017, 3:05 p.m. UTC | #4
Hi Christoph,

On Thursday, 19 October 2017 17:06:57 EEST Christoph Hellwig wrote:
> > Now we have 9 const instances of the config_item_type structure that are
> > identical, with only the .ct_owner field set. Should they be all merged
> > into a single structure ?
> 
> I think that's a good idea.
> 
> But I'm about to slurp up this whole series into my tree, how about making
> that an incremental patch?

I'm fine with that.

Bhumika, would you like to submit an incremental patch, or should I do it ?
Julia Lawall Oct. 20, 2017, 8:02 a.m. UTC | #5
On Thu, 19 Oct 2017, Laurent Pinchart wrote:

> Hi Christoph,
>
> On Thursday, 19 October 2017 17:06:57 EEST Christoph Hellwig wrote:
> > > Now we have 9 const instances of the config_item_type structure that are
> > > identical, with only the .ct_owner field set. Should they be all merged
> > > into a single structure ?
> >
> > I think that's a good idea.
> >
> > But I'm about to slurp up this whole series into my tree, how about making
> > that an incremental patch?
>
> I'm fine with that.
>
> Bhumika, would you like to submit an incremental patch, or should I do it ?

For various types, there seem to be a few hundred of these, eg:

static const struct hda_pcm_stream alc269_44k_pcm_analog_playback = {
        .rates = SNDRV_PCM_RATE_44100, /* fixed rate */
};

static const struct hda_pcm_stream alc269_44k_pcm_analog_capture = {
        .rates = SNDRV_PCM_RATE_44100, /* fixed rate */
};

Would it be desirable to remove them?  I guess one would have to check
that there are not any pointer equality checks on these values.  Would it
be useful to put a #define to keep the orignal names?

julia
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bhumika Goyal Oct. 20, 2017, 8:13 a.m. UTC | #6
On Thu, Oct 19, 2017 at 5:05 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Christoph,
>
> On Thursday, 19 October 2017 17:06:57 EEST Christoph Hellwig wrote:
>> > Now we have 9 const instances of the config_item_type structure that are
>> > identical, with only the .ct_owner field set. Should they be all merged
>> > into a single structure ?
>>
>> I think that's a good idea.
>>
>> But I'm about to slurp up this whole series into my tree, how about making
>> that an incremental patch?
>
> I'm fine with that.
>
> Bhumika, would you like to submit an incremental patch, or should I do it ?
>

I will submit a patch for merging these structures.
But should I make a separate patch for this particular change or send
a v3 for the whole series?

Thanks,
Bhumika

> --
> Regards,
>
> Laurent Pinchart
>
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/usb/gadget/function/f_acm.c b/drivers/usb/gadget/function/f_acm.c
index 5e3828d..8680af4 100644
--- a/drivers/usb/gadget/function/f_acm.c
+++ b/drivers/usb/gadget/function/f_acm.c
@@ -786,7 +786,7 @@  static ssize_t f_acm_port_num_show(struct config_item *item, char *page)
 	NULL,
 };
 
-static struct config_item_type acm_func_type = {
+static const struct config_item_type acm_func_type = {
 	.ct_item_ops    = &acm_item_ops,
 	.ct_attrs	= acm_attrs,
 	.ct_owner       = THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c
index 4c488d1..9657e19 100644
--- a/drivers/usb/gadget/function/f_ecm.c
+++ b/drivers/usb/gadget/function/f_ecm.c
@@ -845,7 +845,7 @@  static inline struct f_ecm_opts *to_f_ecm_opts(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type ecm_func_type = {
+static const struct config_item_type ecm_func_type = {
 	.ct_item_ops	= &ecm_item_ops,
 	.ct_attrs	= ecm_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_eem.c b/drivers/usb/gadget/function/f_eem.c
index 007ec6e..5e5d164 100644
--- a/drivers/usb/gadget/function/f_eem.c
+++ b/drivers/usb/gadget/function/f_eem.c
@@ -556,7 +556,7 @@  static inline struct f_eem_opts *to_f_eem_opts(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type eem_func_type = {
+static const struct config_item_type eem_func_type = {
 	.ct_item_ops	= &eem_item_ops,
 	.ct_attrs	= eem_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 8b34258..5362fc4 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -3385,7 +3385,7 @@  static void ffs_attr_release(struct config_item *item)
 	.release	= ffs_attr_release,
 };
 
-static struct config_item_type ffs_func_type = {
+static const struct config_item_type ffs_func_type = {
 	.ct_item_ops	= &ffs_item_ops,
 	.ct_owner	= THIS_MODULE,
 };
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index d8e359e..6993cb8 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -992,7 +992,7 @@  static ssize_t f_hid_opts_dev_show(struct config_item *item, char *page)
 	NULL,
 };
 
-static struct config_item_type hid_func_type = {
+static const struct config_item_type hid_func_type = {
 	.ct_item_ops	= &hidg_item_ops,
 	.ct_attrs	= hid_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_loopback.c b/drivers/usb/gadget/function/f_loopback.c
index e700938..9311f8c 100644
--- a/drivers/usb/gadget/function/f_loopback.c
+++ b/drivers/usb/gadget/function/f_loopback.c
@@ -556,7 +556,7 @@  static ssize_t f_lb_opts_bulk_buflen_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type lb_func_type = {
+static const struct config_item_type lb_func_type = {
 	.ct_item_ops    = &lb_item_ops,
 	.ct_attrs	= lb_attrs,
 	.ct_owner       = THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 5153e29..a538be3 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -3140,7 +3140,7 @@  static ssize_t fsg_lun_opts_inquiry_string_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type fsg_lun_type = {
+static const struct config_item_type fsg_lun_type = {
 	.ct_item_ops	= &fsg_lun_item_ops,
 	.ct_attrs	= fsg_lun_attrs,
 	.ct_owner	= THIS_MODULE,
@@ -3331,7 +3331,7 @@  static ssize_t fsg_opts_num_buffers_store(struct config_item *item,
 	.drop_item	= fsg_lun_drop,
 };
 
-static struct config_item_type fsg_func_type = {
+static const struct config_item_type fsg_func_type = {
 	.ct_item_ops	= &fsg_item_ops,
 	.ct_group_ops	= &fsg_group_ops,
 	.ct_attrs	= fsg_attrs,
diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index 5d3d794..53fa073 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1189,7 +1189,7 @@  static ssize_t f_midi_opts_id_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type midi_func_type = {
+static const struct config_item_type midi_func_type = {
 	.ct_item_ops	= &midi_item_ops,
 	.ct_attrs	= midi_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_ncm.c b/drivers/usb/gadget/function/f_ncm.c
index 45b334c..3599aa4 100644
--- a/drivers/usb/gadget/function/f_ncm.c
+++ b/drivers/usb/gadget/function/f_ncm.c
@@ -1568,7 +1568,7 @@  static inline struct f_ncm_opts *to_f_ncm_opts(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type ncm_func_type = {
+static const struct config_item_type ncm_func_type = {
 	.ct_item_ops	= &ncm_item_ops,
 	.ct_attrs	= ncm_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_obex.c b/drivers/usb/gadget/function/f_obex.c
index d43e86c..9fc7988 100644
--- a/drivers/usb/gadget/function/f_obex.c
+++ b/drivers/usb/gadget/function/f_obex.c
@@ -411,7 +411,7 @@  static ssize_t f_obex_port_num_show(struct config_item *item, char *page)
 	NULL,
 };
 
-static struct config_item_type obex_func_type = {
+static const struct config_item_type obex_func_type = {
 	.ct_item_ops	= &obex_item_ops,
 	.ct_attrs	= acm_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_phonet.c b/drivers/usb/gadget/function/f_phonet.c
index 9c4c58e..5fe1f2a 100644
--- a/drivers/usb/gadget/function/f_phonet.c
+++ b/drivers/usb/gadget/function/f_phonet.c
@@ -599,7 +599,7 @@  static ssize_t f_phonet_ifname_show(struct config_item *item, char *page)
 	NULL,
 };
 
-static struct config_item_type phonet_func_type = {
+static const struct config_item_type phonet_func_type = {
 	.ct_item_ops	= &phonet_item_ops,
 	.ct_attrs	= phonet_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c
index ea0da35a..8072836 100644
--- a/drivers/usb/gadget/function/f_printer.c
+++ b/drivers/usb/gadget/function/f_printer.c
@@ -1261,7 +1261,7 @@  static ssize_t f_printer_opts_q_len_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type printer_func_type = {
+static const struct config_item_type printer_func_type = {
 	.ct_item_ops	= &printer_item_ops,
 	.ct_attrs	= printer_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c
index c7c5b3c..b981545 100644
--- a/drivers/usb/gadget/function/f_rndis.c
+++ b/drivers/usb/gadget/function/f_rndis.c
@@ -890,7 +890,7 @@  static inline struct f_rndis_opts *to_f_rndis_opts(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type rndis_func_type = {
+static const struct config_item_type rndis_func_type = {
 	.ct_item_ops	= &rndis_item_ops,
 	.ct_attrs	= rndis_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_serial.c b/drivers/usb/gadget/function/f_serial.c
index cb00ada..4ee860b 100644
--- a/drivers/usb/gadget/function/f_serial.c
+++ b/drivers/usb/gadget/function/f_serial.c
@@ -281,7 +281,7 @@  static ssize_t f_serial_port_num_show(struct config_item *item, char *page)
 	NULL,
 };
 
-static struct config_item_type serial_func_type = {
+static const struct config_item_type serial_func_type = {
 	.ct_item_ops	= &serial_item_ops,
 	.ct_attrs	= acm_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c
index 8784fa1..ed22e18 100644
--- a/drivers/usb/gadget/function/f_sourcesink.c
+++ b/drivers/usb/gadget/function/f_sourcesink.c
@@ -1230,7 +1230,7 @@  static ssize_t f_ss_opts_iso_qlen_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type ss_func_type = {
+static const struct config_item_type ss_func_type = {
 	.ct_item_ops    = &ss_item_ops,
 	.ct_attrs	= ss_attrs,
 	.ct_owner       = THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_subset.c b/drivers/usb/gadget/function/f_subset.c
index 434b983..e810d15 100644
--- a/drivers/usb/gadget/function/f_subset.c
+++ b/drivers/usb/gadget/function/f_subset.c
@@ -412,7 +412,7 @@  static inline struct f_gether_opts *to_f_gether_opts(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type gether_func_type = {
+static const struct config_item_type gether_func_type = {
 	.ct_item_ops	= &gether_item_ops,
 	.ct_attrs	= gether_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_tcm.c b/drivers/usb/gadget/function/f_tcm.c
index a82e2bd..e3cec75 100644
--- a/drivers/usb/gadget/function/f_tcm.c
+++ b/drivers/usb/gadget/function/f_tcm.c
@@ -2166,7 +2166,7 @@  static void tcm_attr_release(struct config_item *item)
 	.release		= tcm_attr_release,
 };
 
-static struct config_item_type tcm_func_type = {
+static const struct config_item_type tcm_func_type = {
 	.ct_item_ops	= &tcm_item_ops,
 	.ct_owner	= THIS_MODULE,
 };
diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
index 29efbed..4d5487a 100644
--- a/drivers/usb/gadget/function/f_uac1.c
+++ b/drivers/usb/gadget/function/f_uac1.c
@@ -709,7 +709,7 @@  static void f_uac1_attr_release(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type f_uac1_func_type = {
+static const struct config_item_type f_uac1_func_type = {
 	.ct_item_ops	= &f_uac1_item_ops,
 	.ct_attrs	= f_uac1_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_uac1_legacy.c b/drivers/usb/gadget/function/f_uac1_legacy.c
index 5d229e7..178fd12 100644
--- a/drivers/usb/gadget/function/f_uac1_legacy.c
+++ b/drivers/usb/gadget/function/f_uac1_legacy.c
@@ -921,7 +921,7 @@  static void f_uac1_attr_release(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type f_uac1_func_type = {
+static const struct config_item_type f_uac1_func_type = {
 	.ct_item_ops	= &f_uac1_item_ops,
 	.ct_attrs	= f_uac1_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c
index f05c3f3..7bb9737 100644
--- a/drivers/usb/gadget/function/f_uac2.c
+++ b/drivers/usb/gadget/function/f_uac2.c
@@ -921,7 +921,7 @@  static void f_uac2_attr_release(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type f_uac2_func_type = {
+static const struct config_item_type f_uac2_func_type = {
 	.ct_item_ops	= &f_uac2_item_ops,
 	.ct_attrs	= f_uac2_attrs,
 	.ct_owner	= THIS_MODULE,
diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index 844cb73..f76619f 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -127,7 +127,7 @@  static struct uvcg_control_header *to_uvcg_control_header(struct config_item *it
 	NULL,
 };
 
-static struct config_item_type uvcg_control_header_type = {
+static const struct config_item_type uvcg_control_header_type = {
 	.ct_attrs	= uvcg_control_header_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -170,7 +170,7 @@  static void uvcg_control_header_drop(struct config_group *group,
 	.drop_item		= uvcg_control_header_drop,
 };
 
-static struct config_item_type uvcg_control_header_grp_type = {
+static const struct config_item_type uvcg_control_header_grp_type = {
 	.ct_group_ops	= &uvcg_control_header_grp_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -265,7 +265,7 @@  static ssize_t uvcg_default_processing_bm_controls_show(
 	NULL,
 };
 
-static struct config_item_type uvcg_default_processing_type = {
+static const struct config_item_type uvcg_default_processing_type = {
 	.ct_attrs	= uvcg_default_processing_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -277,7 +277,7 @@  static ssize_t uvcg_default_processing_bm_controls_show(
 	struct config_group	group;
 } uvcg_processing_grp;
 
-static struct config_item_type uvcg_processing_grp_type = {
+static const struct config_item_type uvcg_processing_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -382,7 +382,7 @@  static ssize_t uvcg_default_camera_bm_controls_show(
 	NULL,
 };
 
-static struct config_item_type uvcg_default_camera_type = {
+static const struct config_item_type uvcg_default_camera_type = {
 	.ct_attrs	= uvcg_default_camera_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -394,7 +394,7 @@  static ssize_t uvcg_default_camera_bm_controls_show(
 	struct config_group	group;
 } uvcg_camera_grp;
 
-static struct config_item_type uvcg_camera_grp_type = {
+static const struct config_item_type uvcg_camera_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -460,7 +460,7 @@  static ssize_t uvcg_default_camera_bm_controls_show(
 	NULL,
 };
 
-static struct config_item_type uvcg_default_output_type = {
+static const struct config_item_type uvcg_default_output_type = {
 	.ct_attrs	= uvcg_default_output_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -472,7 +472,7 @@  static ssize_t uvcg_default_camera_bm_controls_show(
 	struct config_group	group;
 } uvcg_output_grp;
 
-static struct config_item_type uvcg_output_grp_type = {
+static const struct config_item_type uvcg_output_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -481,7 +481,7 @@  static ssize_t uvcg_default_camera_bm_controls_show(
 	struct config_group	group;
 } uvcg_terminal_grp;
 
-static struct config_item_type uvcg_terminal_grp_type = {
+static const struct config_item_type uvcg_terminal_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -586,7 +586,7 @@  static void uvcg_control_class_drop_link(struct config_item *src,
 	.drop_link	= uvcg_control_class_drop_link,
 };
 
-static struct config_item_type uvcg_control_class_type = {
+static const struct config_item_type uvcg_control_class_type = {
 	.ct_item_ops	= &uvcg_control_class_item_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -596,7 +596,7 @@  static void uvcg_control_class_drop_link(struct config_item *src,
 	struct config_group	group;
 } uvcg_control_class_grp;
 
-static struct config_item_type uvcg_control_class_grp_type = {
+static const struct config_item_type uvcg_control_class_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -605,7 +605,7 @@  static void uvcg_control_class_drop_link(struct config_item *src,
 	struct config_group	group;
 } uvcg_control_grp;
 
-static struct config_item_type uvcg_control_grp_type = {
+static const struct config_item_type uvcg_control_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -857,7 +857,7 @@  static void uvcg_streaming_header_drop_link(struct config_item *src,
 	NULL,
 };
 
-static struct config_item_type uvcg_streaming_header_type = {
+static const struct config_item_type uvcg_streaming_header_type = {
 	.ct_item_ops	= &uvcg_streaming_header_item_ops,
 	.ct_attrs	= uvcg_streaming_header_attrs,
 	.ct_owner	= THIS_MODULE,
@@ -901,7 +901,7 @@  static void uvcg_streaming_header_drop(struct config_group *group,
 	.drop_item		= uvcg_streaming_header_drop,
 };
 
-static struct config_item_type uvcg_streaming_header_grp_type = {
+static const struct config_item_type uvcg_streaming_header_grp_type = {
 	.ct_group_ops	= &uvcg_streaming_header_grp_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -1150,7 +1150,7 @@  static ssize_t uvcg_frame_dw_frame_interval_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type uvcg_frame_type = {
+static const struct config_item_type uvcg_frame_type = {
 	.ct_attrs	= uvcg_frame_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -1419,7 +1419,7 @@  static ssize_t uvcg_uncompressed_guid_format_store(struct config_item *item,
 	NULL,
 };
 
-static struct config_item_type uvcg_uncompressed_type = {
+static const struct config_item_type uvcg_uncompressed_type = {
 	.ct_group_ops	= &uvcg_uncompressed_group_ops,
 	.ct_attrs	= uvcg_uncompressed_attrs,
 	.ct_owner	= THIS_MODULE,
@@ -1469,7 +1469,7 @@  static void uvcg_uncompressed_drop(struct config_group *group,
 	.drop_item		= uvcg_uncompressed_drop,
 };
 
-static struct config_item_type uvcg_uncompressed_grp_type = {
+static const struct config_item_type uvcg_uncompressed_grp_type = {
 	.ct_group_ops	= &uvcg_uncompressed_grp_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -1619,7 +1619,7 @@  static struct uvcg_mjpeg *to_uvcg_mjpeg(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type uvcg_mjpeg_type = {
+static const struct config_item_type uvcg_mjpeg_type = {
 	.ct_group_ops	= &uvcg_mjpeg_group_ops,
 	.ct_attrs	= uvcg_mjpeg_attrs,
 	.ct_owner	= THIS_MODULE,
@@ -1663,7 +1663,7 @@  static void uvcg_mjpeg_drop(struct config_group *group,
 	.drop_item		= uvcg_mjpeg_drop,
 };
 
-static struct config_item_type uvcg_mjpeg_grp_type = {
+static const struct config_item_type uvcg_mjpeg_grp_type = {
 	.ct_group_ops	= &uvcg_mjpeg_grp_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -1728,7 +1728,7 @@  static void uvcg_mjpeg_drop(struct config_group *group,
 	NULL,
 };
 
-static struct config_item_type uvcg_default_color_matching_type = {
+static const struct config_item_type uvcg_default_color_matching_type = {
 	.ct_attrs	= uvcg_default_color_matching_attrs,
 	.ct_owner	= THIS_MODULE,
 };
@@ -1740,7 +1740,7 @@  static void uvcg_mjpeg_drop(struct config_group *group,
 	struct config_group	group;
 } uvcg_color_matching_grp;
 
-static struct config_item_type uvcg_color_matching_grp_type = {
+static const struct config_item_type uvcg_color_matching_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -2085,7 +2085,7 @@  static void uvcg_streaming_class_drop_link(struct config_item *src,
 	.drop_link	= uvcg_streaming_class_drop_link,
 };
 
-static struct config_item_type uvcg_streaming_class_type = {
+static const struct config_item_type uvcg_streaming_class_type = {
 	.ct_item_ops	= &uvcg_streaming_class_item_ops,
 	.ct_owner	= THIS_MODULE,
 };
@@ -2095,7 +2095,7 @@  static void uvcg_streaming_class_drop_link(struct config_item *src,
 	struct config_group	group;
 } uvcg_streaming_class_grp;
 
-static struct config_item_type uvcg_streaming_class_grp_type = {
+static const struct config_item_type uvcg_streaming_class_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -2104,7 +2104,7 @@  static void uvcg_streaming_class_drop_link(struct config_item *src,
 	struct config_group	group;
 } uvcg_streaming_grp;
 
-static struct config_item_type uvcg_streaming_grp_type = {
+static const struct config_item_type uvcg_streaming_grp_type = {
 	.ct_owner = THIS_MODULE,
 };
 
@@ -2190,7 +2190,7 @@  static void uvc_attr_release(struct config_item *item)
 	NULL,
 };
 
-static struct config_item_type uvc_func_type = {
+static const struct config_item_type uvc_func_type = {
 	.ct_item_ops	= &uvc_item_ops,
 	.ct_attrs	= uvc_attrs,
 	.ct_owner	= THIS_MODULE,