diff options
author | Roel Kluin <12o3l@tiscali.nl> | 2008-04-18 06:25:41 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:39 -0400 |
commit | 0d52cea487c0213d6d7bca9c951210081e7b653b (patch) | |
tree | 86084e64ed325a7b9dd6362874d92336a86eff27 | |
parent | e34ba212225a27cdf5f974be22cc539ae7ee7ca5 (diff) |
OSS: dmabuf: fix negative DMAbuf_get_buffer_pointer() check
Since unsigned active_offs < 0 is even true when DMAbuf_get_buffer_pointer()
returns negative
Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/oss/dmabuf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/oss/dmabuf.c b/sound/oss/dmabuf.c index eaf69971bf92..1e90d769b62e 100644 --- a/sound/oss/dmabuf.c +++ b/sound/oss/dmabuf.c | |||
@@ -795,9 +795,9 @@ static int find_output_space(int dev, char **buf, int *size) | |||
795 | #ifdef BE_CONSERVATIVE | 795 | #ifdef BE_CONSERVATIVE |
796 | active_offs = dmap->byte_counter + dmap->qhead * dmap->fragment_size; | 796 | active_offs = dmap->byte_counter + dmap->qhead * dmap->fragment_size; |
797 | #else | 797 | #else |
798 | active_offs = DMAbuf_get_buffer_pointer(dev, dmap, DMODE_OUTPUT); | 798 | active_offs = max(DMAbuf_get_buffer_pointer(dev, dmap, DMODE_OUTPUT), 0); |
799 | /* Check for pointer wrapping situation */ | 799 | /* Check for pointer wrapping situation */ |
800 | if (active_offs < 0 || active_offs >= dmap->bytes_in_use) | 800 | if (active_offs >= dmap->bytes_in_use) |
801 | active_offs = 0; | 801 | active_offs = 0; |
802 | active_offs += dmap->byte_counter; | 802 | active_offs += dmap->byte_counter; |
803 | #endif | 803 | #endif |