* [2.6 patch] sound/oss/rme96xx.c: fix two check after use
@ 2005-04-13 2:17 Adrian Bunk
2005-04-13 3:03 ` Al Viro
0 siblings, 1 reply; 6+ messages in thread
From: Adrian Bunk @ 2005-04-13 2:17 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
This patch fixes two check after use found by the Coverity checker.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
This patch was already sent on:
- 27 Mar 2005
--- linux-2.6.12-rc1-mm3-full/sound/oss/rme96xx.c.old 2005-03-27 23:16:02.000000000 +0200
+++ linux-2.6.12-rc1-mm3-full/sound/oss/rme96xx.c 2005-03-27 23:16:11.000000000 +0200
@@ -1534,18 +1534,20 @@
static ssize_t rme96xx_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
int cnt; /* number of bytes from "buffer" that will/can be used */
- int hop = count/dma->outchannels;
+ int hop;
int hwp;
int exact = (file->f_flags & O_NONBLOCK);
if(dma == NULL || (dma->s) == NULL)
return -ENXIO;
+ hop = count/dma->outchannels;
+
if (dma->mmapped || !dma->opened)
return -ENXIO;
if (!access_ok(VERIFY_READ, buffer, count))
return -EFAULT;
@@ -1599,18 +1601,20 @@
static ssize_t rme96xx_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
int cnt; /* number of bytes from "buffer" that will/can be used */
- int hop = count/dma->inchannels;
+ int hop;
int hwp;
int exact = (file->f_flags & O_NONBLOCK);
if(dma == NULL || (dma->s) == NULL)
return -ENXIO;
+ hop = count/dma->inchannels;
+
if (dma->mmapped || !dma->opened)
return -ENXIO;
if (!access_ok(VERIFY_WRITE, buffer, count))
return -EFAULT;
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [2.6 patch] sound/oss/rme96xx.c: fix two check after use 2005-04-13 2:17 [2.6 patch] sound/oss/rme96xx.c: fix two check after use Adrian Bunk @ 2005-04-13 3:03 ` Al Viro 0 siblings, 0 replies; 6+ messages in thread From: Al Viro @ 2005-04-13 3:03 UTC (permalink / raw) To: Adrian Bunk; +Cc: Andrew Morton, linux-kernel On Wed, Apr 13, 2005 at 04:17:42AM +0200, Adrian Bunk wrote: > This patch fixes two check after use found by the Coverity checker. Bullshit. ->private_data is set by rme96xx_open() to guaranteed non-NULL and never changed elsewhere. Same comment about reading the fscking source, BUG_ON(), etc. ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <3SGgN-41r-1@gated-at.bofh.it>]
[parent not found: <3SGA8-4n3-9@gated-at.bofh.it>]
* Re: [2.6 patch] sound/oss/rme96xx.c: fix two check after use [not found] ` <3SGA8-4n3-9@gated-at.bofh.it> @ 2005-04-13 10:40 ` Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> 2005-04-13 14:58 ` Christoph Hellwig 2005-04-13 17:46 ` Al Viro 0 siblings, 2 replies; 6+ messages in thread From: Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> @ 2005-04-13 10:40 UTC (permalink / raw) To: Al Viro, Andrew Morton, linux-kernel, Adrian Bunk Al Viro <viro@parcelfarce.linux.theplanet.co.uk> wrote: > On Wed, Apr 13, 2005 at 04:17:42AM +0200, Adrian Bunk wrote: >> This patch fixes two check after use found by the Coverity checker. > > Bullshit. ->private_data is set by rme96xx_open() to guaranteed non-NULL > and never changed elsewhere. Same comment about reading the fscking > source, BUG_ON(), etc. If there are checks, they should be there for a purpose, and any sane reader will asume these checks to be nescensary. If they are dead code, you can say that, but please don't flame Adrian for fixing obviously buggy code in a way that is sane and at least more correct than the original without using several days of his lifetime to analyze the whole driver. Instead, you could provide the correct fix. -- Funny quotes: 33. If lawyers are disbarred and clergymen defrocked, doesn't it follow that electricians can be delighted, musicians denoted, cowboys deranged, models deposed, tree surgeons debarked, and dry cleaners depressed? ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [2.6 patch] sound/oss/rme96xx.c: fix two check after use 2005-04-13 10:40 ` Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> @ 2005-04-13 14:58 ` Christoph Hellwig 2005-04-13 17:46 ` Al Viro 1 sibling, 0 replies; 6+ messages in thread From: Christoph Hellwig @ 2005-04-13 14:58 UTC (permalink / raw) To: Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> Cc: Al Viro, Andrew Morton, linux-kernel, Adrian Bunk On Wed, Apr 13, 2005 at 12:40:38PM +0200, Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> wrote: > If there are checks, they should be there for a purpose, emphasis here is on _should_ > and any sane reader will asume these checks to be nescensary. That's a bad assumptions when you're deadling with drivers or software of similar quality. > If they are dead code, you > can say that, but please don't flame Adrian for fixing obviously buggy code > in a way that is sane and at least more correct than the original without > using several days of his lifetime to analyze the whole driver. Instead, you > could provide the correct fix. The correct fix is to remove the check. And no, we don't have a rule that someone must provide something better when trying to critize it. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [2.6 patch] sound/oss/rme96xx.c: fix two check after use 2005-04-13 10:40 ` Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> 2005-04-13 14:58 ` Christoph Hellwig @ 2005-04-13 17:46 ` Al Viro 1 sibling, 0 replies; 6+ messages in thread From: Al Viro @ 2005-04-13 17:46 UTC (permalink / raw) To: Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> Cc: Andrew Morton, linux-kernel, Adrian Bunk On Wed, Apr 13, 2005 at 12:40:38PM +0200, Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org> wrote: > Al Viro <viro@parcelfarce.linux.theplanet.co.uk> wrote: > > On Wed, Apr 13, 2005 at 04:17:42AM +0200, Adrian Bunk wrote: > > >> This patch fixes two check after use found by the Coverity checker. > > > > Bullshit. ->private_data is set by rme96xx_open() to guaranteed non-NULL > > and never changed elsewhere. Same comment about reading the fscking > > source, BUG_ON(), etc. > > If there are checks, they should be there for a purpose, and any sane > reader will asume these checks to be nescensary. Really? Even in "obviously buggy code"? > If they are dead code, you > can say that, but please don't flame Adrian for fixing obviously buggy code ... > in a way that is sane and at least more correct than the original without > using several days of his lifetime to analyze the whole driver. Funny, that. "several days" in this case boils down to grep for accesses to that field in driver (and stuff #included from it). Which yields exactly one assignment (in ->open()). Combined with understanding that a) ->open() is definitely going to be executed before any calls of ->read() and b) nothing in generic code ever touches ->private_data c) if rme96xx_open() returns 0, it will leave us with non-NULL ->private_data. Five minutes total. And no, "fix" did not give more correct code - in all cases it yields exactly the same behaviour. All it does is * shifting what in effect is if (0) {do something odd} from one place to another * making the warning go away Note that warning had (correctly) pointed to fishy logics in the driver. Shutting it up and leaving the real problem intact (and hidden) is not particulary useful. > Instead, you > could provide the correct fix. "Remove bogus checks". ^ permalink raw reply [flat|nested] 6+ messages in thread
* [2.6 patch] sound/oss/rme96xx.c: fix two check after use
@ 2005-03-27 21:17 Adrian Bunk
0 siblings, 0 replies; 6+ messages in thread
From: Adrian Bunk @ 2005-03-27 21:17 UTC (permalink / raw)
To: linux-kernel
This patch fixes two check after use found by the Coverity checker.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
--- linux-2.6.12-rc1-mm3-full/sound/oss/rme96xx.c.old 2005-03-27 23:16:02.000000000 +0200
+++ linux-2.6.12-rc1-mm3-full/sound/oss/rme96xx.c 2005-03-27 23:16:11.000000000 +0200
@@ -1534,18 +1534,20 @@
static ssize_t rme96xx_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
int cnt; /* number of bytes from "buffer" that will/can be used */
- int hop = count/dma->outchannels;
+ int hop;
int hwp;
int exact = (file->f_flags & O_NONBLOCK);
if(dma == NULL || (dma->s) == NULL)
return -ENXIO;
+ hop = count/dma->outchannels;
+
if (dma->mmapped || !dma->opened)
return -ENXIO;
if (!access_ok(VERIFY_READ, buffer, count))
return -EFAULT;
@@ -1599,18 +1601,20 @@
static ssize_t rme96xx_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
int cnt; /* number of bytes from "buffer" that will/can be used */
- int hop = count/dma->inchannels;
+ int hop;
int hwp;
int exact = (file->f_flags & O_NONBLOCK);
if(dma == NULL || (dma->s) == NULL)
return -ENXIO;
+ hop = count/dma->inchannels;
+
if (dma->mmapped || !dma->opened)
return -ENXIO;
if (!access_ok(VERIFY_WRITE, buffer, count))
return -EFAULT;
^ permalink raw reply [flat|nested] 6+ messages in threadend of thread, other threads:[~2005-04-13 17:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-13 2:17 [2.6 patch] sound/oss/rme96xx.c: fix two check after use Adrian Bunk
2005-04-13 3:03 ` Al Viro
[not found] <3SGgN-41r-1@gated-at.bofh.it>
[not found] ` <3SGA8-4n3-9@gated-at.bofh.it>
2005-04-13 10:40 ` Bodo Eggert <harvested.in.lkml@posting.7eggert.dyndns.org>
2005-04-13 14:58 ` Christoph Hellwig
2005-04-13 17:46 ` Al Viro
-- strict thread matches above, loose matches on Subject: below --
2005-03-27 21:17 Adrian Bunk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox