mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] staging: comedi: add error handling for vmap
@ 2018-06-12  3:25 Zhouyang Jia
  2018-06-12 11:50 ` Dan Carpenter
  0 siblings, 1 reply; 3+ messages in thread
From: Zhouyang Jia @ 2018-06-12  3:25 UTC (permalink / raw)
  Cc: Zhouyang Jia, Ian Abbott, H Hartley Sweeten, Greg Kroah-Hartman,
	Amitoj Kaur Chawla, devel, linux-kernel

When vmap fails, the lack of error-handling code may
cause unexpected results.

This patch adds error-handling code after calling vmap.

Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>
---
 drivers/staging/comedi/comedi_buf.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/comedi_buf.c b/drivers/staging/comedi/comedi_buf.c
index f693c2c..5e48693 100644
--- a/drivers/staging/comedi/comedi_buf.c
+++ b/drivers/staging/comedi/comedi_buf.c
@@ -132,9 +132,12 @@ static void __comedi_buf_alloc(struct comedi_device *dev,
 	spin_unlock_irqrestore(&s->spin_lock, flags);
 
 	/* vmap the prealloc_buf if all the pages were allocated */
-	if (i == n_pages)
+	if (i == n_pages) {
 		async->prealloc_buf = vmap(pages, n_pages, VM_MAP,
 					   COMEDI_PAGE_PROTECTION);
+		if (!async->prealloc_buf)
+			dev_err(dev->class_dev, "failed to vmap pages\n");
+	}
 
 	vfree(pages);
 }
-- 
2.7.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] staging: comedi: add error handling for vmap
  2018-06-12  3:25 [PATCH] staging: comedi: add error handling for vmap Zhouyang Jia
@ 2018-06-12 11:50 ` Dan Carpenter
       [not found]   ` <CABb2TxKVnC3KkCAs501ffzomOF8GLfLqDvWW=z7mHRf8UKc9YQ@mail.gmail.com>
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2018-06-12 11:50 UTC (permalink / raw)
  To: Zhouyang Jia; +Cc: devel, Greg Kroah-Hartman, linux-kernel, Ian Abbott

On Tue, Jun 12, 2018 at 11:25:35AM +0800, Zhouyang Jia wrote:
> When vmap fails, the lack of error-handling code may
> cause unexpected results.
> 
> This patch adds error-handling code after calling vmap.
> 

Again, this is not error handling, this is just an error message.  This
error condition is handled in the caller.

regards,
dan carpenter



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] staging: comedi: add error handling for vmap
       [not found]   ` <CABb2TxKVnC3KkCAs501ffzomOF8GLfLqDvWW=z7mHRf8UKc9YQ@mail.gmail.com>
@ 2018-06-14  9:58     ` Ian Abbott
  0 siblings, 0 replies; 3+ messages in thread
From: Ian Abbott @ 2018-06-14  9:58 UTC (permalink / raw)
  To: Zhouyang Jia, Dan Carpenter; +Cc: devel, Greg Kroah-Hartman, linux-kernel

On 14/06/18 08:57, Zhouyang Jia wrote:
> Hi,
> 
> I reported this bug since more than 90% callsites of vmap are
> well handled in kernel. The caller function __comedi_buf_alloc
> has no return value, so I don't know how the error is handled in
> its caller.
> 
> I believe there would be a better error handling method, but I
> have limited domain knowledge, so I'm sorry I can't help here.
> 
> Thanks for your kind reply.
> 
> Best,
> Zhouyang

__comedi_buf_alloc is just a helper function factored out of, and called 
by comedi_buf_alloc.  __comedi_buf_alloc does not clean up after itself 
on error because it expects comedi_buf_alloc to detect the error and 
call __comedi_buf_free to clean up any partially allocated mess:

     __comedi_buf_alloc(dev, s, n_pages);
     if (!async->prealloc_buf) {
         /*
          * [This is not the actual comment in the code!]
          *
          * Error occured in __comedi_buf_alloc().
          * Buffer may be partially allocated.
          * Call __comedi_buf_free() to clean it up.
          */
         __comedi_buf_free(dev, s);
         return -ENOMEM;
     }

> 
> 
> 
> 2018-06-12 19:50 GMT+08:00 Dan Carpenter <dan.carpenter@oracle.com 
> <mailto:dan.carpenter@oracle.com>>:
> 
>     On Tue, Jun 12, 2018 at 11:25:35AM +0800, Zhouyang Jia wrote:
>     > When vmap fails, the lack of error-handling code may
>     > cause unexpected results.
>     > 
>     > This patch adds error-handling code after calling vmap.
>     > 
> 
>     Again, this is not error handling, this is just an error message.  This
>     error condition is handled in the caller.
> 
>     regards,
>     dan carpenter
> 
> 
> 


-- 
-=( Ian Abbott <abbotti@mev.co.uk> || Web: www.mev.co.uk )=-
-=( MEV Ltd. is a company registered in England & Wales. )=-
-=( Registered number: 02862268.  Registered address:    )=-
-=( 15 West Park Road, Bramhall, STOCKPORT, SK7 3JZ, UK. )=-

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-06-14  9:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-12  3:25 [PATCH] staging: comedi: add error handling for vmap Zhouyang Jia
2018-06-12 11:50 ` Dan Carpenter
     [not found]   ` <CABb2TxKVnC3KkCAs501ffzomOF8GLfLqDvWW=z7mHRf8UKc9YQ@mail.gmail.com>
2018-06-14  9:58     ` Ian Abbott

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®