From: Dan Carpenter <dan.carpenter@oracle.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [bug report] ocfs2: fix value of OCFS2_INVALID_SLOT
Date: Wed, 24 Jun 2020 17:57:04 +0300 [thread overview]
Message-ID: <20200624145704.GA31008@kadam> (raw)
In-Reply-To: <83182084-7bb9-93bb-ee44-8cfd25315940@oracle.com>
On Tue, Jun 23, 2020 at 01:26:11PM -0700, Junxiao Bi wrote:
> On 6/23/20 4:05 AM, Dan Carpenter wrote:
>
> > Hello Junxiao Bi,
> >
> > The patch c824ce1feffa: "ocfs2: fix value of OCFS2_INVALID_SLOT" from
> > Jun 21, 2020, leads to the following static checker warning:
> >
> > fs/ocfs2/super.c:1269 ocfs2_parse_options()
> > warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
> >
> > fs/ocfs2/super.c
> > 1253 static int ocfs2_parse_options(struct super_block *sb,
> > 1254 char *options,
> > 1255 struct mount_options *mopt,
> > 1256 int is_remount)
> > 1257 {
> > 1258 int status, user_stack = 0;
> > 1259 char *p;
> > 1260 u32 tmp;
> > 1261 int token, option;
> > 1262 substring_t args[MAX_OPT_ARGS];
> > 1263
> > 1264 trace_ocfs2_parse_options(is_remount, options ? options : "(none)");
> > 1265
> > 1266 mopt->commit_interval = 0;
> > 1267 mopt->mount_opt = OCFS2_MOUNT_NOINTR;
> > 1268 mopt->atime_quantum = OCFS2_DEFAULT_ATIME_QUANTUM;
> > 1269 mopt->slot = OCFS2_INVALID_SLOT;
> > ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
> > OCFS2_INVALID_SLOT used to be -1, but the patch changed it to USHRT_MAX.
> > mopt->slot is a s16 so it becomes -1 again.
> > We assign it to osb->preferred_slot which is an int so it's still -1.
>
> hmm, i think osb->perferred_slot should be 65535, not -1. I test with the
> following small program.
>
> #include <stdlib.h>
> #include <stdio.h>
>
> int main(void)
> {
> ??? int i;
> ??? short s;
> ??? unsigned short us;
>
> ??? us = -1;
> ??? s = us;
> ??? i = s;
> ??? printf("i %d s %d us %d\n", i, s, us);
> }
I'm looking at linux-next. The only thing which is unsigend short is
the OCFS2_INVALID_SLOT define itself. The other variables are either
signed short or int. In this case what we care about is the
preferred_slot which is an int.
#define OCFS2_INVALID_SLOT ((unsigned short)-1)
int main(void)
{
short slot = OCFS2_INVALID_SLOT;
int perferred_slot = slot;
if (perferred_slot == OCFS2_INVALID_SLOT)
printf("Works\n");
else
printf("nope\n");
}
There are a few other place where the types cause an issue.
fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot'
fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot'
fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot'
regards,
dan carpenter
prev parent reply other threads:[~2020-06-24 14:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-23 11:05 [Ocfs2-devel] [bug report] ocfs2: fix value of OCFS2_INVALID_SLOT Dan Carpenter
2020-06-23 20:26 ` Junxiao Bi
2020-06-24 14:57 ` Dan Carpenter [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200624145704.GA31008@kadam \
--to=dan.carpenter@oracle.com \
--cc=ocfs2-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.