* [PATCH] FS: Fixing return type of unsigned_offsets
@ 2017-05-11 4:27 Pushkar Jambhlekar
2017-05-11 4:39 ` Joe Perches
0 siblings, 1 reply; 7+ messages in thread
From: Pushkar Jambhlekar @ 2017-05-11 4:27 UTC (permalink / raw)
To: Al Viro; +Cc: linux-fsdevel, linux-kernel, Pushkar Jambhlekar
Fixing Sparse warning. It should return bool, instead it returns
int.
Signed-off-by: Pushkar Jambhlekar <pushkar.iit@gmail.com>
---
fs/read_write.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/read_write.c b/fs/read_write.c
index 47c1d44..d672830 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -33,9 +33,9 @@ const struct file_operations generic_ro_fops = {
EXPORT_SYMBOL(generic_ro_fops);
-static inline int unsigned_offsets(struct file *file)
+static inline bool unsigned_offsets(struct file *file)
{
- return file->f_mode & FMODE_UNSIGNED_OFFSET;
+ return !!(file->f_mode & FMODE_UNSIGNED_OFFSET);
}
/**
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 4:27 [PATCH] FS: Fixing return type of unsigned_offsets Pushkar Jambhlekar
@ 2017-05-11 4:39 ` Joe Perches
2017-05-11 4:43 ` Pushkar Jambhlekar
0 siblings, 1 reply; 7+ messages in thread
From: Joe Perches @ 2017-05-11 4:39 UTC (permalink / raw)
To: Pushkar Jambhlekar, Al Viro; +Cc: linux-fsdevel, linux-kernel
On Thu, 2017-05-11 at 09:57 +0530, Pushkar Jambhlekar wrote:
> Fixing Sparse warning. It should return bool, instead it returns
> int.
[]
> diff --git a/fs/read_write.c b/fs/read_write.c
[]
> @@ -33,9 +33,9 @@ const struct file_operations generic_ro_fops = {
>
> EXPORT_SYMBOL(generic_ro_fops);
>
> -static inline int unsigned_offsets(struct file *file)
> +static inline bool unsigned_offsets(struct file *file)
> {
> - return file->f_mode & FMODE_UNSIGNED_OFFSET;
> + return !!(file->f_mode & FMODE_UNSIGNED_OFFSET);
trivia: the !! isn't necessary as by definition
all non-zero assigns to bool are converted to 1.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 4:39 ` Joe Perches
@ 2017-05-11 4:43 ` Pushkar Jambhlekar
2017-05-11 4:55 ` Joe Perches
0 siblings, 1 reply; 7+ messages in thread
From: Pushkar Jambhlekar @ 2017-05-11 4:43 UTC (permalink / raw)
To: Joe Perches; +Cc: Al Viro, linux-fsdevel, linux-kernel
Should I change my implementation, i.e. remove '!!'?
On Thu, May 11, 2017 at 10:09 AM, Joe Perches <joe@perches.com> wrote:
> On Thu, 2017-05-11 at 09:57 +0530, Pushkar Jambhlekar wrote:
>> Fixing Sparse warning. It should return bool, instead it returns
>> int.
> []
>> diff --git a/fs/read_write.c b/fs/read_write.c
> []
>> @@ -33,9 +33,9 @@ const struct file_operations generic_ro_fops = {
>>
>> EXPORT_SYMBOL(generic_ro_fops);
>>
>> -static inline int unsigned_offsets(struct file *file)
>> +static inline bool unsigned_offsets(struct file *file)
>> {
>> - return file->f_mode & FMODE_UNSIGNED_OFFSET;
>> + return !!(file->f_mode & FMODE_UNSIGNED_OFFSET);
>
> trivia: the !! isn't necessary as by definition
> all non-zero assigns to bool are converted to 1.
>
--
Jambhlekar Pushkar Arun
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 4:43 ` Pushkar Jambhlekar
@ 2017-05-11 4:55 ` Joe Perches
2017-05-11 5:04 ` Pushkar Jambhlekar
0 siblings, 1 reply; 7+ messages in thread
From: Joe Perches @ 2017-05-11 4:55 UTC (permalink / raw)
To: Pushkar Jambhlekar; +Cc: Al Viro, linux-fsdevel, linux-kernel
On Thu, 2017-05-11 at 10:13 +0530, Pushkar Jambhlekar wrote:
> Should I change my implementation, i.e. remove '!!'?
That'd be up to Al.
At least one implementation using similar bit comparisons
in fs/*.c does not use !!
fs/locks.c:static bool lease_breaking(struct file_lock *fl)
fs/locks.c-{
fs/locks.c- return fl->fl_flags & (FL_UNLOCK_PENDING | FL_DOWNGRADE_PENDING)
fs/locks.c-}
I didn't look very hard.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 4:55 ` Joe Perches
@ 2017-05-11 5:04 ` Pushkar Jambhlekar
2017-05-11 6:07 ` Al Viro
0 siblings, 1 reply; 7+ messages in thread
From: Pushkar Jambhlekar @ 2017-05-11 5:04 UTC (permalink / raw)
To: Joe Perches; +Cc: Al Viro, linux-fsdevel, linux-kernel
If I remove '!!', sparse flags warning:
fs/read_write.c:38:29: warning: incorrect type in return expression
(different base types)
fs/read_write.c:38:29: expected bool
fs/read_write.c:38:29: got restricted fmode_t
It means explicit conversion is needed.
On Thu, May 11, 2017 at 10:25 AM, Joe Perches <joe@perches.com> wrote:
> On Thu, 2017-05-11 at 10:13 +0530, Pushkar Jambhlekar wrote:
>> Should I change my implementation, i.e. remove '!!'?
>
> That'd be up to Al.
>
> At least one implementation using similar bit comparisons
> in fs/*.c does not use !!
>
> fs/locks.c:static bool lease_breaking(struct file_lock *fl)
> fs/locks.c-{
> fs/locks.c- return fl->fl_flags & (FL_UNLOCK_PENDING | FL_DOWNGRADE_PENDING)
> fs/locks.c-}
>
> I didn't look very hard.
--
Jambhlekar Pushkar Arun
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 5:04 ` Pushkar Jambhlekar
@ 2017-05-11 6:07 ` Al Viro
2017-05-11 20:09 ` Luc Van Oostenryck
0 siblings, 1 reply; 7+ messages in thread
From: Al Viro @ 2017-05-11 6:07 UTC (permalink / raw)
To: Pushkar Jambhlekar; +Cc: Joe Perches, linux-fsdevel, linux-kernel
On Thu, May 11, 2017 at 10:34:02AM +0530, Pushkar Jambhlekar wrote:
> If I remove '!!', sparse flags warning:
>
> fs/read_write.c:38:29: warning: incorrect type in return expression
> (different base types)
> fs/read_write.c:38:29: expected bool
> fs/read_write.c:38:29: got restricted fmode_t
>
> It means explicit conversion is needed.
FVO"needed" equal to "needed to make sparse STFU"? If anything, that's
sparse being wrong - evaluate.c:check_assignment_type() should do
if (t == &ctype_bool) {
if (is_fouled_type(s))
warning((*rp)->pos, "%s degrades to integer",
show_typename(s->ctype.base_type));
goto Cast;
}
right after
} else if (!(sclass & TYPE_RESTRICT))
goto Cast;
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] FS: Fixing return type of unsigned_offsets
2017-05-11 6:07 ` Al Viro
@ 2017-05-11 20:09 ` Luc Van Oostenryck
0 siblings, 0 replies; 7+ messages in thread
From: Luc Van Oostenryck @ 2017-05-11 20:09 UTC (permalink / raw)
To: Al Viro
Cc: Pushkar Jambhlekar, Joe Perches, linux-fsdevel, linux-kernel,
Linux-Sparse
On Thu, May 11, 2017 at 8:07 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> FVO"needed" equal to "needed to make sparse STFU"? If anything, that's
> sparse being wrong - evaluate.c:check_assignment_type() should do
> if (t == &ctype_bool) {
> if (is_fouled_type(s))
> warning((*rp)->pos, "%s degrades to integer",
> show_typename(s->ctype.base_type));
> goto Cast;
> }
> right after
> } else if (!(sclass & TYPE_RESTRICT))
> goto Cast;
What about an explicit cast of restricted types to bool?
I think we would want the equivalent of this patch for those too.
-- Luc
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-05-11 20:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-11 4:27 [PATCH] FS: Fixing return type of unsigned_offsets Pushkar Jambhlekar
2017-05-11 4:39 ` Joe Perches
2017-05-11 4:43 ` Pushkar Jambhlekar
2017-05-11 4:55 ` Joe Perches
2017-05-11 5:04 ` Pushkar Jambhlekar
2017-05-11 6:07 ` Al Viro
2017-05-11 20:09 ` Luc Van Oostenryck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).