[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: KernelNewbies Wikki



On 7/1/05, Sanjay Kumar, Noida <sanjayku@xxxxxxxxxxx> wrote:

> Hi,

> if the kmalloc fails for hello_msg, why do we need to release
> the semaphore.This is the code snippet:
>         if (!hello_msg){
>                 up(&hello_sem);
>                 return -ENOMEM;
>         }

Please read the code carefully again:

static ssize_t hello_write(struct inode *inode, const char __user
*user_buf, size_t len, loff_t offset)
{
        ..
        down(&hello_sem);   --> semaphore initialized here.
        if (hello_msg) {
                kfree(hello_msg);
                hello_msg = kmalloc(len+1, GFP_KERNEL);
                if (!hello_msg) {
                        up(&hello_sem);  --> if fails,  change back to
original semval and return
                        return -ENOMEM;

..
}

Where is the problem?

./h
www.embedded-tutorials.com - Embedded Linux Tutorials

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/