]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
media: cx18/ivtv: fix regression: remove __init from a non-init function
authorHans Verkuil <hans.verkuil@cisco.com>
Sat, 9 Feb 2013 08:40:10 +0000 (05:40 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 3 Mar 2013 22:03:36 +0000 (06:03 +0800)
commit cfb046cb800ba306b211fbbe4ac633486e11055f upstream.

Commits 5e6e81b2890db3969527772a8350825a85c22d5c (cx18) and
2aebbf6737212265b917ed27c875c59d3037110a (ivtv) added an __init
annotation to the cx18-alsa-load and ivtv-alsa-load functions. However,
these functions are called *after* initialization by the main cx18/ivtv
driver. By that time the memory containing those functions is already
freed and your machine goes BOOM.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/pci/cx18/cx18-alsa-main.c
drivers/media/pci/cx18/cx18-alsa-pcm.h
drivers/media/pci/ivtv/ivtv-alsa-main.c
drivers/media/pci/ivtv/ivtv-alsa-pcm.h

index 8e971ff605884b45184aae191c90bbeb40027021..b2c8c3439fea88ca441c435cfcb4d04387d997db 100644 (file)
@@ -197,7 +197,7 @@ err_exit:
        return ret;
 }
 
-static int __init cx18_alsa_load(struct cx18 *cx)
+static int cx18_alsa_load(struct cx18 *cx)
 {
        struct v4l2_device *v4l2_dev = &cx->v4l2_dev;
        struct cx18_stream *s;
index d26e51f94577fac526f8416ce3af303ca87f3048..e2b2c5b012157feff45ea99176fd8b79ec85fe47 100644 (file)
@@ -20,7 +20,7 @@
  *  02111-1307  USA
  */
 
-int __init snd_cx18_pcm_create(struct snd_cx18_card *cxsc);
+int snd_cx18_pcm_create(struct snd_cx18_card *cxsc);
 
 /* Used by cx18-mailbox to announce the PCM data to the module */
 void cx18_alsa_announce_pcm_data(struct snd_cx18_card *card, u8 *pcm_data,
index 4a221c693995e858b1d08cdcbc47fed6b0ec7e57..e970cface70edfaea231213ddafd983d379630f4 100644 (file)
@@ -205,7 +205,7 @@ err_exit:
        return ret;
 }
 
-static int __init ivtv_alsa_load(struct ivtv *itv)
+static int ivtv_alsa_load(struct ivtv *itv)
 {
        struct v4l2_device *v4l2_dev = &itv->v4l2_dev;
        struct ivtv_stream *s;
index 23dfe0d124004c1c6bf693caedb967b7991c5c7a..186814e0b2d4d1a19dcebdf0f42d79ca024bd5fb 100644 (file)
@@ -20,4 +20,4 @@
  *  02111-1307  USA
  */
 
-int __init snd_ivtv_pcm_create(struct snd_ivtv_card *itvsc);
+int snd_ivtv_pcm_create(struct snd_ivtv_card *itvsc);