Showing error 1334

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: fs/splice.c
Line in file: 260
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

 230                        break;
 231                }
 232
 233                if (do_wakeup) {
 234                        smp_mb();
 235                        if (waitqueue_active(&pipe->wait))
 236                                wake_up_interruptible_sync(&pipe->wait);
 237                        kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
 238                        do_wakeup = 0;
 239                }
 240
 241                pipe->waiting_writers++;
 242                pipe_wait(pipe);
 243                pipe->waiting_writers--;
 244        }
 245
 246        if (pipe->inode) {
 247                mutex_unlock(&pipe->inode->i_mutex);
 248
 249                if (do_wakeup) {
 250                        smp_mb();
 251                        if (waitqueue_active(&pipe->wait))
 252                                wake_up_interruptible(&pipe->wait);
 253                        kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
 254                }
 255        }
 256
 257        while (page_nr < spd_pages)
 258                spd->spd_release(spd, page_nr++);
 259
 260        return ret;
 261}
 262
 263static void spd_release_page(struct splice_pipe_desc *spd, unsigned int i)
 264{
 265        page_cache_release(spd->pages[i]);
 266}
 267
 268static int
 269__generic_file_splice_read(struct file *in, loff_t *ppos,
 270                           struct pipe_inode_info *pipe, size_t len,
Show full sources