diff options
| -rw-r--r-- | drivers/dma/dmatest.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index ea1f885e70f4..3b148c2647f8 100644 --- a/drivers/dma/dmatest.c +++ b/drivers/dma/dmatest.c | |||
| @@ -516,6 +516,7 @@ static int dmatest_func(void *data) | |||
| 516 | enum dma_ctrl_flags flags; | 516 | enum dma_ctrl_flags flags; |
| 517 | u8 *pq_coefs = NULL; | 517 | u8 *pq_coefs = NULL; |
| 518 | int ret; | 518 | int ret; |
| 519 | unsigned int buf_size; | ||
| 519 | struct dmatest_data *src; | 520 | struct dmatest_data *src; |
| 520 | struct dmatest_data *dst; | 521 | struct dmatest_data *dst; |
| 521 | int i; | 522 | int i; |
| @@ -580,9 +581,10 @@ static int dmatest_func(void *data) | |||
| 580 | goto err_free_coefs; | 581 | goto err_free_coefs; |
| 581 | } | 582 | } |
| 582 | 583 | ||
| 583 | if (1 << align > params->buf_size) { | 584 | buf_size = params->buf_size; |
| 585 | if (1 << align > buf_size) { | ||
| 584 | pr_err("%u-byte buffer too small for %d-byte alignment\n", | 586 | pr_err("%u-byte buffer too small for %d-byte alignment\n", |
| 585 | params->buf_size, 1 << align); | 587 | buf_size, 1 << align); |
| 586 | goto err_free_coefs; | 588 | goto err_free_coefs; |
| 587 | } | 589 | } |
| 588 | 590 | ||
| @@ -595,7 +597,7 @@ static int dmatest_func(void *data) | |||
| 595 | goto err_usrcs; | 597 | goto err_usrcs; |
| 596 | 598 | ||
| 597 | for (i = 0; i < src->cnt; i++) { | 599 | for (i = 0; i < src->cnt; i++) { |
| 598 | src->raw[i] = kmalloc(params->buf_size + align, | 600 | src->raw[i] = kmalloc(buf_size + align, |
| 599 | GFP_KERNEL); | 601 | GFP_KERNEL); |
| 600 | if (!src->raw[i]) | 602 | if (!src->raw[i]) |
| 601 | goto err_srcbuf; | 603 | goto err_srcbuf; |
| @@ -617,7 +619,7 @@ static int dmatest_func(void *data) | |||
| 617 | goto err_udsts; | 619 | goto err_udsts; |
| 618 | 620 | ||
| 619 | for (i = 0; i < dst->cnt; i++) { | 621 | for (i = 0; i < dst->cnt; i++) { |
| 620 | dst->raw[i] = kmalloc(params->buf_size + align, | 622 | dst->raw[i] = kmalloc(buf_size + align, |
| 621 | GFP_KERNEL); | 623 | GFP_KERNEL); |
| 622 | if (!dst->raw[i]) | 624 | if (!dst->raw[i]) |
| 623 | goto err_dstbuf; | 625 | goto err_dstbuf; |
| @@ -656,16 +658,16 @@ static int dmatest_func(void *data) | |||
| 656 | total_tests++; | 658 | total_tests++; |
| 657 | 659 | ||
| 658 | if (params->transfer_size) { | 660 | if (params->transfer_size) { |
| 659 | if (params->transfer_size >= params->buf_size) { | 661 | if (params->transfer_size >= buf_size) { |
| 660 | pr_err("%u-byte transfer size must be lower than %u-buffer size\n", | 662 | pr_err("%u-byte transfer size must be lower than %u-buffer size\n", |
| 661 | params->transfer_size, params->buf_size); | 663 | params->transfer_size, buf_size); |
| 662 | break; | 664 | break; |
| 663 | } | 665 | } |
| 664 | len = params->transfer_size; | 666 | len = params->transfer_size; |
| 665 | } else if (params->norandom) { | 667 | } else if (params->norandom) { |
| 666 | len = params->buf_size; | 668 | len = buf_size; |
| 667 | } else { | 669 | } else { |
| 668 | len = dmatest_random() % params->buf_size + 1; | 670 | len = dmatest_random() % buf_size + 1; |
| 669 | } | 671 | } |
| 670 | 672 | ||
| 671 | /* Do not alter transfer size explicitly defined by user */ | 673 | /* Do not alter transfer size explicitly defined by user */ |
| @@ -680,8 +682,8 @@ static int dmatest_func(void *data) | |||
| 680 | src->off = 0; | 682 | src->off = 0; |
| 681 | dst->off = 0; | 683 | dst->off = 0; |
| 682 | } else { | 684 | } else { |
| 683 | src->off = dmatest_random() % (params->buf_size - len + 1); | 685 | src->off = dmatest_random() % (buf_size - len + 1); |
| 684 | dst->off = dmatest_random() % (params->buf_size - len + 1); | 686 | dst->off = dmatest_random() % (buf_size - len + 1); |
| 685 | 687 | ||
| 686 | src->off = (src->off >> align) << align; | 688 | src->off = (src->off >> align) << align; |
| 687 | dst->off = (dst->off >> align) << align; | 689 | dst->off = (dst->off >> align) << align; |
| @@ -690,9 +692,9 @@ static int dmatest_func(void *data) | |||
| 690 | if (!params->noverify) { | 692 | if (!params->noverify) { |
| 691 | start = ktime_get(); | 693 | start = ktime_get(); |
| 692 | dmatest_init_srcs(src->aligned, src->off, len, | 694 | dmatest_init_srcs(src->aligned, src->off, len, |
| 693 | params->buf_size, is_memset); | 695 | buf_size, is_memset); |
| 694 | dmatest_init_dsts(dst->aligned, dst->off, len, | 696 | dmatest_init_dsts(dst->aligned, dst->off, len, |
| 695 | params->buf_size, is_memset); | 697 | buf_size, is_memset); |
| 696 | 698 | ||
| 697 | diff = ktime_sub(ktime_get(), start); | 699 | diff = ktime_sub(ktime_get(), start); |
| 698 | filltime = ktime_add(filltime, diff); | 700 | filltime = ktime_add(filltime, diff); |
| @@ -707,7 +709,7 @@ static int dmatest_func(void *data) | |||
| 707 | continue; | 709 | continue; |
| 708 | } | 710 | } |
| 709 | 711 | ||
| 710 | um->len = params->buf_size; | 712 | um->len = buf_size; |
| 711 | for (i = 0; i < src->cnt; i++) { | 713 | for (i = 0; i < src->cnt; i++) { |
| 712 | void *buf = src->aligned[i]; | 714 | void *buf = src->aligned[i]; |
| 713 | struct page *pg = virt_to_page(buf); | 715 | struct page *pg = virt_to_page(buf); |
| @@ -827,7 +829,7 @@ static int dmatest_func(void *data) | |||
| 827 | src->off + len, src->off, | 829 | src->off + len, src->off, |
| 828 | PATTERN_SRC | PATTERN_COPY, true, is_memset); | 830 | PATTERN_SRC | PATTERN_COPY, true, is_memset); |
| 829 | error_count += dmatest_verify(src->aligned, src->off + len, | 831 | error_count += dmatest_verify(src->aligned, src->off + len, |
| 830 | params->buf_size, src->off + len, | 832 | buf_size, src->off + len, |
| 831 | PATTERN_SRC, true, is_memset); | 833 | PATTERN_SRC, true, is_memset); |
| 832 | 834 | ||
| 833 | pr_debug("%s: verifying dest buffer...\n", current->comm); | 835 | pr_debug("%s: verifying dest buffer...\n", current->comm); |
| @@ -839,7 +841,7 @@ static int dmatest_func(void *data) | |||
| 839 | PATTERN_SRC | PATTERN_COPY, false, is_memset); | 841 | PATTERN_SRC | PATTERN_COPY, false, is_memset); |
| 840 | 842 | ||
| 841 | error_count += dmatest_verify(dst->aligned, dst->off + len, | 843 | error_count += dmatest_verify(dst->aligned, dst->off + len, |
| 842 | params->buf_size, dst->off + len, | 844 | buf_size, dst->off + len, |
| 843 | PATTERN_DST, false, is_memset); | 845 | PATTERN_DST, false, is_memset); |
| 844 | 846 | ||
| 845 | diff = ktime_sub(ktime_get(), start); | 847 | diff = ktime_sub(ktime_get(), start); |
