All of lore.kernel.org
 help / color / mirror / Atom feed
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

      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.