No description
Find a file
Ben Dooks cf44af741d dmaengine: tegra: avoid overflow of byte tracking
[ Upstream commit e486df3930 ]

The dma_desc->bytes_transferred counter tracks the number of bytes
moved by the DMA channel. This is then used to calculate the information
passed back in the in the tegra_dma_tx_status callback, which is usually
fine.

When the DMA channel is configured as continous, then the bytes_transferred
counter will increase over time and eventually overflow to become negative
so the residue count will become invalid and the ALSA sound-dma code will
report invalid hardware pointer values to the application. This results in
some users becoming confused about the playout position and putting audio
data in the wrong place.

To fix this issue, always ensure the bytes_transferred field is modulo the
size of the request. We only do this for the case of the cyclic transfer
done ISR as anyone attempting to move 2GiB of DMA data in one transfer
is unlikely.

Note, we don't fix the issue that we should /never/ transfer a negative
number of bytes so we could make those fields unsigned.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-04-05 22:31:40 +02:00
arch x86/build: Mark per-CPU symbols as absolute explicitly for LLD 2019-04-05 22:31:40 +02:00
block blk-mq: fix a hung issue when fsync 2019-02-20 10:20:44 +01:00
certs Replace magic for trusting the secondary keyring with #define 2018-09-09 19:55:54 +02:00
crypto crypto: pcbc - remove bogus memcpy()s with src == dest 2019-03-23 14:35:21 +01:00
Documentation ARM: 8833/1: Ensure that NEON code always compiles with Clang 2019-04-05 22:31:34 +02:00
drivers dmaengine: tegra: avoid overflow of byte tracking 2019-04-05 22:31:40 +02:00
firmware License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fs jbd2: fix race when writing superblock 2019-04-05 22:31:33 +02:00
include netfilter: physdev: relax br_netfilter dependency 2019-04-05 22:31:39 +02:00
init Revert "mm: use early_pfn_to_nid in page_ext_init" 2019-03-23 14:35:13 +01:00
ipc ipc/sem.c: prevent queue.status tearing in semop 2018-09-05 09:26:30 +02:00
kernel cpu/hotplug: Mute hotplug lockdep during init 2019-04-05 22:31:38 +02:00
lib ARM: 8833/1: Ensure that NEON code always compiles with Clang 2019-04-05 22:31:34 +02:00
mm page_poison: play nicely with KASAN 2019-04-05 22:31:28 +02:00
net netfilter: physdev: relax br_netfilter dependency 2019-04-05 22:31:39 +02:00
samples samples: mei: use /dev/mei0 instead of /dev/mei 2019-02-15 08:09:12 +01:00
scripts kbuild: modversions: Fix relative CRC byte order interpretation 2019-04-03 06:25:17 +02:00
security selinux: do not override context on context mounts 2019-04-05 22:31:39 +02:00
sound ASoC: fsl-asoc-card: fix object reference leaks in fsl_asoc_card_probe 2019-04-05 22:31:35 +02:00
tools perf test: Fix failure of 'evsel-tp-sched' test on s390 2019-04-05 22:31:32 +02:00
usr initramfs: fix initramfs rebuilds w/ compression after disabling 2017-11-03 07:39:19 -07:00
virt KVM: Reject device ioctls from processes other than the VM's creator 2019-04-03 06:25:20 +02:00
.cocciconfig
.get_maintainer.ignore
.gitattributes .gitattributes: set git diff driver for C source code files 2016-10-07 18:46:30 -07:00
.gitignore kbuild: rpm-pkg: keep spec file until make mrproper 2018-02-13 10:19:46 +01:00
.mailmap .mailmap: Add Maciej W. Rozycki's Imagination e-mail address 2017-11-10 12:16:15 -08:00
COPYING
CREDITS MAINTAINERS: update TPM driver infrastructure changes 2017-11-09 17:58:40 -08:00
Kbuild License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
MAINTAINERS MAINTAINERS: Add Sasha as a stable branch maintainer 2018-12-01 09:42:50 +01:00
Makefile Linux 4.14.110 2019-04-03 06:25:21 +02:00
README README: add a new README file, pointing to the Documentation/ 2016-10-24 08:12:35 -02:00

Linux kernel
============

This file was moved to Documentation/admin-guide/README.rst

Please notice that there are several guides for kernel developers and users.
These guides can be rendered in a number of formats, like HTML and PDF.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
See Documentation/00-INDEX for a list of what is contained in each file.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.