]> Pileus Git - ~andy/linux/blobdiff - sound/oss/sequencer.c
Merge remote-tracking branch 'asoc/fix/adsp' into asoc-next
[~andy/linux] / sound / oss / sequencer.c
index 5ea1098ac427a5546bdf9f211587bbe8030d1821..4ff60a6427d9d8d3ea7cf095bc2766f2d49955fc 100644 (file)
@@ -241,7 +241,7 @@ int sequencer_write(int dev, struct file *file, const char __user *buf, int coun
                                return -ENXIO;
 
                        fmt = (*(short *) &event_rec[0]) & 0xffff;
-                       err = synth_devs[dev]->load_patch(dev, fmt, buf, p + 4, c, 0);
+                       err = synth_devs[dev]->load_patch(dev, fmt, buf + p, c, 0);
                        if (err < 0)
                                return err;
 
@@ -545,6 +545,9 @@ static void seq_chn_common_event(unsigned char *event_rec)
                case MIDI_PGM_CHANGE:
                        if (seq_mode == SEQ_2)
                        {
+                               if (chn > 15)
+                                       break;
+
                                synth_devs[dev]->chn_info[chn].pgm_num = p1;
                                if ((int) dev >= num_synths)
                                        synth_devs[dev]->set_instr(dev, chn, p1);
@@ -596,6 +599,9 @@ static void seq_chn_common_event(unsigned char *event_rec)
                case MIDI_PITCH_BEND:
                        if (seq_mode == SEQ_2)
                        {
+                               if (chn > 15)
+                                       break;
+
                                synth_devs[dev]->chn_info[chn].bender_value = w14;
 
                                if ((int) dev < num_synths)