aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/oss/dmasound/dmasound_atari.c54
1 files changed, 36 insertions, 18 deletions
diff --git a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c
index 59eb53f89318..b747e77238f8 100644
--- a/sound/oss/dmasound/dmasound_atari.c
+++ b/sound/oss/dmasound/dmasound_atari.c
@@ -217,8 +217,9 @@ static ssize_t ata_ct_u8(const u_char *userPtr, size_t userCount,
217 used = count*2; 217 used = count*2;
218 while (count > 0) { 218 while (count > 0) {
219 u_short data; 219 u_short data;
220 if (get_user(data, ((u_short *)userPtr)++)) 220 if (get_user(data, (u_short *)userPtr))
221 return -EFAULT; 221 return -EFAULT;
222 userPtr += 2;
222 *p++ = data ^ 0x8080; 223 *p++ = data ^ 0x8080;
223 count--; 224 count--;
224 } 225 }
@@ -240,8 +241,9 @@ static ssize_t ata_ct_s16be(const u_char *userPtr, size_t userCount,
240 used = count*2; 241 used = count*2;
241 while (count > 0) { 242 while (count > 0) {
242 u_short data; 243 u_short data;
243 if (get_user(data, ((u_short *)userPtr)++)) 244 if (get_user(data, (u_short *)userPtr))
244 return -EFAULT; 245 return -EFAULT;
246 userPtr += 2;
245 *p++ = data; 247 *p++ = data;
246 *p++ = data; 248 *p++ = data;
247 count--; 249 count--;
@@ -271,8 +273,9 @@ static ssize_t ata_ct_u16be(const u_char *userPtr, size_t userCount,
271 used = count*2; 273 used = count*2;
272 while (count > 0) { 274 while (count > 0) {
273 u_short data; 275 u_short data;
274 if (get_user(data, ((u_short *)userPtr)++)) 276 if (get_user(data, (u_short *)userPtr))
275 return -EFAULT; 277 return -EFAULT;
278 userPtr += 2;
276 data ^= 0x8000; 279 data ^= 0x8000;
277 *p++ = data; 280 *p++ = data;
278 *p++ = data; 281 *p++ = data;
@@ -285,8 +288,9 @@ static ssize_t ata_ct_u16be(const u_char *userPtr, size_t userCount,
285 used = count*4; 288 used = count*4;
286 while (count > 0) { 289 while (count > 0) {
287 u_long data; 290 u_long data;
288 if (get_user(data, ((u_int *)userPtr)++)) 291 if (get_user(data, (u_int *)userPtr))
289 return -EFAULT; 292 return -EFAULT;
293 userPtr += 4;
290 *p++ = data ^ 0x80008000; 294 *p++ = data ^ 0x80008000;
291 count--; 295 count--;
292 } 296 }
@@ -309,8 +313,9 @@ static ssize_t ata_ct_s16le(const u_char *userPtr, size_t userCount,
309 used = count*2; 313 used = count*2;
310 while (count > 0) { 314 while (count > 0) {
311 u_short data; 315 u_short data;
312 if (get_user(data, ((u_short *)userPtr)++)) 316 if (get_user(data, (u_short *)userPtr))
313 return -EFAULT; 317 return -EFAULT;
318 userPtr += 2;
314 data = le2be16(data); 319 data = le2be16(data);
315 *p++ = data; 320 *p++ = data;
316 *p++ = data; 321 *p++ = data;
@@ -323,8 +328,9 @@ static ssize_t ata_ct_s16le(const u_char *userPtr, size_t userCount,
323 used = count*4; 328 used = count*4;
324 while (count > 0) { 329 while (count > 0) {
325 u_long data; 330 u_long data;
326 if (get_user(data, ((u_int *)userPtr)++)) 331 if (get_user(data, (u_int *)userPtr))
327 return -EFAULT; 332 return -EFAULT;
333 userPtr += 4;
328 data = le2be16dbl(data); 334 data = le2be16dbl(data);
329 *p++ = data; 335 *p++ = data;
330 count--; 336 count--;
@@ -348,8 +354,9 @@ static ssize_t ata_ct_u16le(const u_char *userPtr, size_t userCount,
348 used = count*2; 354 used = count*2;
349 while (count > 0) { 355 while (count > 0) {
350 u_short data; 356 u_short data;
351 if (get_user(data, ((u_short *)userPtr)++)) 357 if (get_user(data, (u_short *)userPtr))
352 return -EFAULT; 358 return -EFAULT;
359 userPtr += 2;
353 data = le2be16(data) ^ 0x8000; 360 data = le2be16(data) ^ 0x8000;
354 *p++ = data; 361 *p++ = data;
355 *p++ = data; 362 *p++ = data;
@@ -361,8 +368,9 @@ static ssize_t ata_ct_u16le(const u_char *userPtr, size_t userCount,
361 used = count; 368 used = count;
362 while (count > 0) { 369 while (count > 0) {
363 u_long data; 370 u_long data;
364 if (get_user(data, ((u_int *)userPtr)++)) 371 if (get_user(data, (u_int *)userPtr))
365 return -EFAULT; 372 return -EFAULT;
373 userPtr += 4;
366 data = le2be16dbl(data) ^ 0x80008000; 374 data = le2be16dbl(data) ^ 0x80008000;
367 *p++ = data; 375 *p++ = data;
368 count--; 376 count--;
@@ -470,8 +478,9 @@ static ssize_t ata_ctx_s8(const u_char *userPtr, size_t userCount,
470 if (bal < 0) { 478 if (bal < 0) {
471 if (userCount < 2) 479 if (userCount < 2)
472 break; 480 break;
473 if (get_user(data, ((u_short *)userPtr)++)) 481 if (get_user(data, (u_short *)userPtr))
474 return -EFAULT; 482 return -EFAULT;
483 userPtr += 2;
475 userCount -= 2; 484 userCount -= 2;
476 bal += hSpeed; 485 bal += hSpeed;
477 } 486 }
@@ -524,8 +533,9 @@ static ssize_t ata_ctx_u8(const u_char *userPtr, size_t userCount,
524 if (bal < 0) { 533 if (bal < 0) {
525 if (userCount < 2) 534 if (userCount < 2)
526 break; 535 break;
527 if (get_user(data, ((u_short *)userPtr)++)) 536 if (get_user(data, (u_short *)userPtr))
528 return -EFAULT; 537 return -EFAULT;
538 userPtr += 2;
529 data ^= 0x8080; 539 data ^= 0x8080;
530 userCount -= 2; 540 userCount -= 2;
531 bal += hSpeed; 541 bal += hSpeed;
@@ -561,8 +571,9 @@ static ssize_t ata_ctx_s16be(const u_char *userPtr, size_t userCount,
561 if (bal < 0) { 571 if (bal < 0) {
562 if (userCount < 2) 572 if (userCount < 2)
563 break; 573 break;
564 if (get_user(data, ((u_short *)userPtr)++)) 574 if (get_user(data, (u_short *)userPtr))
565 return -EFAULT; 575 return -EFAULT;
576 userPtr += 2;
566 userCount -= 2; 577 userCount -= 2;
567 bal += hSpeed; 578 bal += hSpeed;
568 } 579 }
@@ -579,8 +590,9 @@ static ssize_t ata_ctx_s16be(const u_char *userPtr, size_t userCount,
579 if (bal < 0) { 590 if (bal < 0) {
580 if (userCount < 4) 591 if (userCount < 4)
581 break; 592 break;
582 if (get_user(data, ((u_int *)userPtr)++)) 593 if (get_user(data, (u_int *)userPtr))
583 return -EFAULT; 594 return -EFAULT;
595 userPtr += 4;
584 userCount -= 4; 596 userCount -= 4;
585 bal += hSpeed; 597 bal += hSpeed;
586 } 598 }
@@ -615,8 +627,9 @@ static ssize_t ata_ctx_u16be(const u_char *userPtr, size_t userCount,
615 if (bal < 0) { 627 if (bal < 0) {
616 if (userCount < 2) 628 if (userCount < 2)
617 break; 629 break;
618 if (get_user(data, ((u_short *)userPtr)++)) 630 if (get_user(data, (u_short *)userPtr))
619 return -EFAULT; 631 return -EFAULT;
632 userPtr += 2;
620 data ^= 0x8000; 633 data ^= 0x8000;
621 userCount -= 2; 634 userCount -= 2;
622 bal += hSpeed; 635 bal += hSpeed;
@@ -634,8 +647,9 @@ static ssize_t ata_ctx_u16be(const u_char *userPtr, size_t userCount,
634 if (bal < 0) { 647 if (bal < 0) {
635 if (userCount < 4) 648 if (userCount < 4)
636 break; 649 break;
637 if (get_user(data, ((u_int *)userPtr)++)) 650 if (get_user(data, (u_int *)userPtr))
638 return -EFAULT; 651 return -EFAULT;
652 userPtr += 4;
639 data ^= 0x80008000; 653 data ^= 0x80008000;
640 userCount -= 4; 654 userCount -= 4;
641 bal += hSpeed; 655 bal += hSpeed;
@@ -671,8 +685,9 @@ static ssize_t ata_ctx_s16le(const u_char *userPtr, size_t userCount,
671 if (bal < 0) { 685 if (bal < 0) {
672 if (userCount < 2) 686 if (userCount < 2)
673 break; 687 break;
674 if (get_user(data, ((u_short *)userPtr)++)) 688 if (get_user(data, (u_short *)userPtr))
675 return -EFAULT; 689 return -EFAULT;
690 userPtr += 2;
676 data = le2be16(data); 691 data = le2be16(data);
677 userCount -= 2; 692 userCount -= 2;
678 bal += hSpeed; 693 bal += hSpeed;
@@ -690,8 +705,9 @@ static ssize_t ata_ctx_s16le(const u_char *userPtr, size_t userCount,
690 if (bal < 0) { 705 if (bal < 0) {
691 if (userCount < 4) 706 if (userCount < 4)
692 break; 707 break;
693 if (get_user(data, ((u_int *)userPtr)++)) 708 if (get_user(data, (u_int *)userPtr))
694 return -EFAULT; 709 return -EFAULT;
710 userPtr += 4;
695 data = le2be16dbl(data); 711 data = le2be16dbl(data);
696 userCount -= 4; 712 userCount -= 4;
697 bal += hSpeed; 713 bal += hSpeed;
@@ -727,8 +743,9 @@ static ssize_t ata_ctx_u16le(const u_char *userPtr, size_t userCount,
727 if (bal < 0) { 743 if (bal < 0) {
728 if (userCount < 2) 744 if (userCount < 2)
729 break; 745 break;
730 if (get_user(data, ((u_short *)userPtr)++)) 746 if (get_user(data, (u_short *)userPtr))
731 return -EFAULT; 747 return -EFAULT;
748 userPtr += 2;
732 data = le2be16(data) ^ 0x8000; 749 data = le2be16(data) ^ 0x8000;
733 userCount -= 2; 750 userCount -= 2;
734 bal += hSpeed; 751 bal += hSpeed;
@@ -746,8 +763,9 @@ static ssize_t ata_ctx_u16le(const u_char *userPtr, size_t userCount,
746 if (bal < 0) { 763 if (bal < 0) {
747 if (userCount < 4) 764 if (userCount < 4)
748 break; 765 break;
749 if (get_user(data, ((u_int *)userPtr)++)) 766 if (get_user(data, (u_int *)userPtr))
750 return -EFAULT; 767 return -EFAULT;
768 userPtr += 4;
751 data = le2be16dbl(data) ^ 0x80008000; 769 data = le2be16dbl(data) ^ 0x80008000;
752 userCount -= 4; 770 userCount -= 4;
753 bal += hSpeed; 771 bal += hSpeed;