diff options
Diffstat (limited to 'sound/isa/wavefront/wavefront_synth.c')
| -rw-r--r-- | sound/isa/wavefront/wavefront_synth.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c index 95eeca16335..e5db001363e 100644 --- a/sound/isa/wavefront/wavefront_synth.c +++ b/sound/isa/wavefront/wavefront_synth.c @@ -28,6 +28,8 @@ #include <linux/wait.h> #include <linux/firmware.h> #include <linux/moduleparam.h> +#include <linux/slab.h> +#include <linux/module.h> #include <sound/core.h> #include <sound/snd_wavefront.h> #include <sound/initval.h> @@ -536,7 +538,7 @@ munge_int32 (unsigned int src, /* Note: we leave the upper bits in place */ dst++; - }; + } return dst; }; @@ -633,7 +635,7 @@ wavefront_get_sample_status (snd_wavefront_t *dev, int assume_rom) wbuf[1] = i >> 7; if (snd_wavefront_cmd (dev, WFC_IDENTIFY_SAMPLE_TYPE, rbuf, wbuf)) { - snd_printk("cannot identify sample " + snd_printk(KERN_WARNING "cannot identify sample " "type of slot %d\n", i); dev->sample_status[i] = WF_ST_EMPTY; continue; @@ -1194,7 +1196,7 @@ wavefront_send_multisample (snd_wavefront_t *dev, wavefront_patch_info *header) int num_samples; unsigned char *msample_hdr; - msample_hdr = kmalloc(sizeof(WF_MSAMPLE_BYTES), GFP_KERNEL); + msample_hdr = kmalloc(WF_MSAMPLE_BYTES, GFP_KERNEL); if (! msample_hdr) return -ENOMEM; @@ -1648,9 +1650,10 @@ snd_wavefront_synth_ioctl (struct snd_hwdep *hw, struct file *file, card = (struct snd_card *) hw->card; - snd_assert(card != NULL, return -ENODEV); - - snd_assert(card->private_data != NULL, return -ENODEV); + if (snd_BUG_ON(!card)) + return -ENODEV; + if (snd_BUG_ON(!card->private_data)) + return -ENODEV; acard = card->private_data; dev = &acard->wavefront; @@ -1663,12 +1666,11 @@ snd_wavefront_synth_ioctl (struct snd_hwdep *hw, struct file *file, break; case WFCTL_WFCMD: - wc = kmalloc(sizeof(*wc), GFP_KERNEL); - if (! wc) - return -ENOMEM; - if (copy_from_user (wc, argp, sizeof (*wc))) - err = -EFAULT; - else if (wavefront_synth_control (acard, wc) < 0) + wc = memdup_user(argp, sizeof(*wc)); + if (IS_ERR(wc)) + return PTR_ERR(wc); + + if (wavefront_synth_control (acard, wc) < 0) err = -EIO; else if (copy_to_user (argp, wc, sizeof (*wc))) err = -EFAULT; @@ -1737,7 +1739,7 @@ snd_wavefront_internal_interrupt (snd_wavefront_card_t *card) 7 Unused */ -static int __devinit +static int snd_wavefront_interrupt_bits (int irq) { @@ -1765,7 +1767,7 @@ snd_wavefront_interrupt_bits (int irq) return bits; } -static void __devinit +static void wavefront_should_cause_interrupt (snd_wavefront_t *dev, int val, int port, unsigned long timeout) @@ -1784,7 +1786,7 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev, } } -static int __devinit +static int wavefront_reset_to_cleanliness (snd_wavefront_t *dev) { @@ -1935,11 +1937,11 @@ wavefront_reset_to_cleanliness (snd_wavefront_t *dev) return (1); } -static int __devinit +static int wavefront_download_firmware (snd_wavefront_t *dev, char *path) { - unsigned char *buf; + const unsigned char *buf; int len, err; int section_cnt_downloaded = 0; const struct firmware *firmware; @@ -2008,7 +2010,7 @@ wavefront_download_firmware (snd_wavefront_t *dev, char *path) } -static int __devinit +static int wavefront_do_reset (snd_wavefront_t *dev) { @@ -2097,7 +2099,7 @@ wavefront_do_reset (snd_wavefront_t *dev) return 1; } -int __devinit +int snd_wavefront_start (snd_wavefront_t *dev) { @@ -2139,7 +2141,7 @@ snd_wavefront_start (snd_wavefront_t *dev) return (0); } -int __devinit +int snd_wavefront_detect (snd_wavefront_card_t *card) { |
