Skip to content

Commit

Permalink
fs/pipe.c: local vars have to match types of proper pipe_inode_info f…
Browse files Browse the repository at this point in the history
…ields

head, tail, ring_size are declared as unsigned int, so all local
variables that operate with these fields have to be unsigned to avoid
signed integer overflow.

Right now, it isn't an issue because the maximum pipe size is limited by
1U<<31.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Andrei Vagin <[email protected]>
Suggested-by: Dmitry Safonov <[email protected]>
Acked-by: Christian Brauner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
avagin authored and torvalds committed Mar 24, 2022
1 parent 5a519c8 commit aeb213c
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions fs/pipe.c
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct pipe_inode_info *pipe = filp->private_data;
int count, head, tail, mask;
unsigned int count, head, tail, mask;

switch (cmd) {
case FIONREAD:
Expand Down Expand Up @@ -829,7 +829,7 @@ struct pipe_inode_info *alloc_pipe_info(void)

void free_pipe_info(struct pipe_inode_info *pipe)
{
int i;
unsigned int i;

#ifdef CONFIG_WATCH_QUEUE
if (pipe->watch_queue)
Expand Down

0 comments on commit aeb213c

Please sign in to comment.