Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-linus' into for-next

Conflicts:
sound/core/control.c

+55 -26
+1 -1
sound/core/control.c
··· 1128 1128 1129 1129 change = ue->tlv_data_size != size; 1130 1130 if (!change) 1131 - change = memcmp(ue->tlv_data, container, size); 1131 + change = memcmp(ue->tlv_data, container, size) != 0; 1132 1132 if (!change) { 1133 1133 kfree(container); 1134 1134 return 0;
+2 -2
sound/core/seq/Kconfig
··· 47 47 timer. 48 48 49 49 config SND_SEQ_MIDI_EVENT 50 - def_tristate SND_RAWMIDI 50 + tristate 51 51 52 52 config SND_SEQ_MIDI 53 - tristate 53 + def_tristate SND_RAWMIDI 54 54 select SND_SEQ_MIDI_EVENT 55 55 56 56 config SND_SEQ_MIDI_EMUL
+4 -9
sound/core/seq/seq_clientmgr.c
··· 1502 1502 static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg) 1503 1503 { 1504 1504 struct snd_seq_queue_info *info = arg; 1505 - int result; 1506 1505 struct snd_seq_queue *q; 1507 1506 1508 - result = snd_seq_queue_alloc(client->number, info->locked, info->flags); 1509 - if (result < 0) 1510 - return result; 1511 - 1512 - q = queueptr(result); 1513 - if (q == NULL) 1514 - return -EINVAL; 1507 + q = snd_seq_queue_alloc(client->number, info->locked, info->flags); 1508 + if (IS_ERR(q)) 1509 + return PTR_ERR(q); 1515 1510 1516 1511 info->queue = q->queue; 1517 1512 info->locked = q->locked; ··· 1516 1521 if (!info->name[0]) 1517 1522 snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue); 1518 1523 strlcpy(q->name, info->name, sizeof(q->name)); 1519 - queuefree(q); 1524 + snd_use_lock_free(&q->use_lock); 1520 1525 1521 1526 return 0; 1522 1527 }
+9 -5
sound/core/seq/seq_queue.c
··· 184 184 static void queue_use(struct snd_seq_queue *queue, int client, int use); 185 185 186 186 /* allocate a new queue - 187 - * return queue index value or negative value for error 187 + * return pointer to new queue or ERR_PTR(-errno) for error 188 + * The new queue's use_lock is set to 1. It is the caller's responsibility to 189 + * call snd_use_lock_free(&q->use_lock). 188 190 */ 189 - int snd_seq_queue_alloc(int client, int locked, unsigned int info_flags) 191 + struct snd_seq_queue *snd_seq_queue_alloc(int client, int locked, unsigned int info_flags) 190 192 { 191 193 struct snd_seq_queue *q; 192 194 193 195 q = queue_new(client, locked); 194 196 if (q == NULL) 195 - return -ENOMEM; 197 + return ERR_PTR(-ENOMEM); 196 198 q->info_flags = info_flags; 197 199 queue_use(q, client, 1); 200 + snd_use_lock_use(&q->use_lock); 198 201 if (queue_list_add(q) < 0) { 202 + snd_use_lock_free(&q->use_lock); 199 203 queue_delete(q); 200 - return -ENOMEM; 204 + return ERR_PTR(-ENOMEM); 201 205 } 202 - return q->queue; 206 + return q; 203 207 } 204 208 205 209 /* delete a queue - queue must be owned by the client */
+1 -1
sound/core/seq/seq_queue.h
··· 71 71 72 72 73 73 /* create new queue (constructor) */ 74 - int snd_seq_queue_alloc(int client, int locked, unsigned int flags); 74 + struct snd_seq_queue *snd_seq_queue_alloc(int client, int locked, unsigned int flags); 75 75 76 76 /* delete queue (destructor) */ 77 77 int snd_seq_queue_delete(int client, int queueid);
+6 -1
sound/firewire/iso-resources.c
··· 210 210 */ 211 211 void fw_iso_resources_free(struct fw_iso_resources *r) 212 212 { 213 - struct fw_card *card = fw_parent_device(r->unit)->card; 213 + struct fw_card *card; 214 214 int bandwidth, channel; 215 + 216 + /* Not initialized. */ 217 + if (r->unit == NULL) 218 + return; 219 + card = fw_parent_device(r->unit)->card; 215 220 216 221 mutex_lock(&r->mutex); 217 222
+1
sound/firewire/motu/motu.c
··· 131 131 return; 132 132 error: 133 133 snd_motu_transaction_unregister(motu); 134 + snd_motu_stream_destroy_duplex(motu); 134 135 snd_card_free(motu->card); 135 136 dev_info(&motu->unit->device, 136 137 "Sound card registration failed: %d\n", err);
+11 -3
sound/pci/emu10k1/emufx.c
··· 698 698 { 699 699 struct snd_emu10k1_fx8010_control_old_gpr __user *octl; 700 700 701 - if (emu->support_tlv) 702 - return copy_from_user(gctl, &_gctl[idx], sizeof(*gctl)); 701 + if (emu->support_tlv) { 702 + if (in_kernel) 703 + memcpy(gctl, (void *)&_gctl[idx], sizeof(*gctl)); 704 + else if (copy_from_user(gctl, &_gctl[idx], sizeof(*gctl))) 705 + return -EFAULT; 706 + return 0; 707 + } 708 + 703 709 octl = (struct snd_emu10k1_fx8010_control_old_gpr __user *)_gctl; 704 - if (copy_from_user(gctl, &octl[idx], sizeof(*octl))) 710 + if (in_kernel) 711 + memcpy(gctl, (void *)&octl[idx], sizeof(*octl)); 712 + else if (copy_from_user(gctl, &octl[idx], sizeof(*octl))) 705 713 return -EFAULT; 706 714 gctl->tlv = NULL; 707 715 return 0;
-1
sound/pci/hda/patch_realtek.c
··· 6647 6647 SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, 6648 6648 ALC225_STANDARD_PINS, 6649 6649 {0x12, 0xb7a60130}, 6650 - {0x13, 0xb8a61140}, 6651 6650 {0x17, 0x90170110}), 6652 6651 {} 6653 6652 };
+2
sound/usb/mixer.c
··· 548 548 549 549 if (size < sizeof(scale)) 550 550 return -ENOMEM; 551 + if (cval->min_mute) 552 + scale[0] = SNDRV_CTL_TLVT_DB_MINMAX_MUTE; 551 553 scale[2] = cval->dBmin; 552 554 scale[3] = cval->dBmax; 553 555 if (copy_to_user(_tlv, scale, sizeof(scale)))
+1
sound/usb/mixer.h
··· 64 64 int cached; 65 65 int cache_val[MAX_CHANNELS]; 66 66 u8 initialized; 67 + u8 min_mute; 67 68 void *private_data; 68 69 }; 69 70
+6
sound/usb/mixer_quirks.c
··· 1878 1878 if (unitid == 7 && cval->control == UAC_FU_VOLUME) 1879 1879 snd_dragonfly_quirk_db_scale(mixer, cval, kctl); 1880 1880 break; 1881 + /* lowest playback value is muted on C-Media devices */ 1882 + case USB_ID(0x0d8c, 0x000c): 1883 + case USB_ID(0x0d8c, 0x0014): 1884 + if (strstr(kctl->id.name, "Playback")) 1885 + cval->min_mute = 1; 1886 + break; 1881 1887 } 1882 1888 } 1883 1889
+11 -3
sound/usb/quirks.c
··· 1141 1141 case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */ 1142 1142 case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */ 1143 1143 case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */ 1144 + case USB_ID(0x1395, 0x740a): /* Sennheiser DECT */ 1144 1145 case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */ 1145 1146 case USB_ID(0x1de7, 0x0013): /* Phoenix Audio MT202exe */ 1146 1147 case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */ ··· 1308 1307 && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) 1309 1308 mdelay(20); 1310 1309 1311 - /* Zoom R16/24 needs a tiny delay here, otherwise requests like 1312 - * get/set frequency return as failed despite actually succeeding. 1310 + /* Zoom R16/24, Logitech H650e, Jabra 550a needs a tiny delay here, 1311 + * otherwise requests like get/set frequency return as failed despite 1312 + * actually succeeding. 1313 1313 */ 1314 - if (chip->usb_id == USB_ID(0x1686, 0x00dd) && 1314 + if ((chip->usb_id == USB_ID(0x1686, 0x00dd) || 1315 + chip->usb_id == USB_ID(0x046d, 0x0a46) || 1316 + chip->usb_id == USB_ID(0x0b0e, 0x0349)) && 1315 1317 (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) 1316 1318 mdelay(1); 1317 1319 } ··· 1376 1372 break; 1377 1373 } 1378 1374 } 1375 + break; 1376 + case USB_ID(0x16d0, 0x0a23): 1377 + if (fp->altsetting == 2) 1378 + return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1379 1379 break; 1380 1380 1381 1381 default: