On Wednesday, November 13, 2013 02:22:28 AM Amit Pundir wrote: > ep_create_wakeup_source() reports ENOMEM That needs to be fixed too. I suppose we can make the wakeup_source_register() stub for CONFIG_PM_SLEEP unset return ERR_PTR(-ENOSYS) or something like that and ep_create_wakeup_source() return that instead of -ENOMEM. It looks like eventpoll.c is the only user of it built for CONFIG_PM_SLEEP unset, but that needs to be double checked. > if wakeup_source_register() > returns NULL. ep_create_wakeup_source() assumes that NULL is only > returned if we run into ENOMEM but NULL is also returned when > CONFIG_PM_SLEEP is disabled. > > Signed-off-by: Amit Pundir <amit.pundir@xxxxxxxxxx> > --- > Changed in v2: > Using static inline functions instead of #ifdefs > --- > fs/eventpoll.c | 3 +-- > include/uapi/linux/eventpoll.h | 12 ++++++++++++ > 2 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/fs/eventpoll.c b/fs/eventpoll.c > index 473e09d..10f9c43 100644 > --- a/fs/eventpoll.c > +++ b/fs/eventpoll.c > @@ -1820,8 +1820,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd, > goto error_tgt_fput; > > /* Check if EPOLLWAKEUP is allowed */ > - if ((epds.events & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND)) > - epds.events &= ~EPOLLWAKEUP; > + ep_epollwakeup_check(&epds.events); The "check" part of the name kind of suggests that the function will not change things. What about ep_adjust_epollwakeup() or something along these lines? And why don't you pass a pointer to epds to it? Wouldn't it be cleaner this way? > > /* > * We have to check that the file structure underneath the file descriptor > diff --git a/include/uapi/linux/eventpoll.h b/include/uapi/linux/eventpoll.h > index 2c267bc..1d139c2 100644 > --- a/include/uapi/linux/eventpoll.h > +++ b/include/uapi/linux/eventpoll.h > @@ -62,4 +62,16 @@ struct epoll_event { > } EPOLL_PACKED; > > > +#ifdef CONFIG_PM_SLEEP > +static inline void ep_epollwakeup_check(__u32 *epev) > +{ > + if ((*epev & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND)) > + *epev &= ~EPOLLWAKEUP; > +} > +#else > +static inline void ep_epollwakeup_check(__u32 *epev) > +{ > + *epev &= ~EPOLLWAKEUP; > +} > +#endif > #endif /* _UAPI_LINUX_EVENTPOLL_H */ Thanks! -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html