From: Dan Carpenter <dan.carpenter@oracle.com>
To: Jose Rivera <German.Rivera@freescale.com>
Cc: "devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
"agraf@suse.de" <agraf@suse.de>, "arnd@arndb.de" <arnd@arndb.de>,
"bhupesh.sharma@freescale.com" <bhupesh.sharma@freescale.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Stuart Yoder <stuart.yoder@freescale.com>,
Scott Wood <scottwood@freescale.com>,
"nir.erez@freescale.com" <nir.erez@freescale.com>,
"itai.katz@freescale.com" <itai.katz@freescale.com>,
"bhamciu1@freescale.com" <bhamciu1@freescale.com>,
"R89243@freescale.com" <R89243@freescale.com>,
Richard Schmitt <richard.schmitt@freescale.com>
Subject: Re: [PATCH 1/7] staging: fsl-mc: MC bus IRQ support
Date: Tue, 5 May 2015 11:48:30 +0300 [thread overview]
Message-ID: <20150505084830.GL16501@mwanda> (raw)
In-Reply-To: <DM2PR0301MB1309AA660970101D3882E650FED20@DM2PR0301MB1309.namprd03.prod.outlook.com>
On Mon, May 04, 2015 at 10:09:08PM +0000, Jose Rivera wrote:
> > > + WARN_ON((int16_t)irq_count < 0);
> >
> > This code is doing "WARN_ON(test_bit(15, (unsigned long *)&irq_count));".
> > That seems like nonsense. Anyway, just delete the WARN_ON().
> >
> I disagree. This WARN_ON is checking that irq_count is in the expected range
> (it fits in int16_t as a positive number). The dprc_scan_objects() function
> expects irq_count to be of type "unsigned int" (which is 32-bit unsigned)
>
You're not allowed to disagree because it's a testable thing and not an
opinion about style or something. :P What you want is:
WARN_ON(irq_count > SHRT_MAX);
> > > +
> > > + if ((int16_t)irq_count >
> > > + mc_bus->resource_pools[FSL_MC_POOL_IRQ].max_count) {
> >
> > Why are we casting this? Also can you align it like:
> >
> This casting is done for safety, to prevent the comparison to be done
> in "unsigned int" due to integer promotion rules.
We are truncating away the top bytes but then we use them later.
Fortunately we use them only to print out a warning, but if we used them
for anything else it would be a serious bug.
Are you expecting .max_count to be negative?
If not then both sides are positive and type promotion is fine. We can
delete the first (buggy) warning, like I said and just leave the second
warning. It will now complain if any of bits 16 to 31 are set where
before it wouldn't.
> > to read what "goto error;" does. The error handling here calls
> > devm_kfree() which is not needed... devm_ functions automatically clean
> > up after themselves. This seems a pattern throughout. Do a search for
> > devm_free() and see which ones are really needed or not.
> >
> I know that memory allocated with devm_kzalloc() is freed at the end of the
> lifetime of the device it is attached to. However, in error paths, why wait
> until the device is destroyed? Why not free the memory earlier so that it
> can be used for other purposes?
My understanding is that devm_ functions are supposed to be used in the
probe() functions to simplify the error handling. So hopefully the
device lifetime ends as soon as this function returns a failure.
devm_ function are not a use them everywhere because now the kernel has
garbage collection type thing.
regards,
dan carpenter
next prev parent reply other threads:[~2015-05-05 8:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-28 17:39 [PATCH 0/7] staging: fsl-mc: New functionality to the MC bus driver J. German Rivera
2015-04-28 17:39 ` [PATCH 1/7] staging: fsl-mc: MC bus IRQ support J. German Rivera
2015-04-30 11:49 ` Dan Carpenter
2015-05-04 22:09 ` Jose Rivera
2015-05-05 8:48 ` Dan Carpenter [this message]
2015-05-05 16:08 ` Jose Rivera
2015-05-05 16:40 ` Dan Carpenter
2015-05-05 19:56 ` Scott Wood
2015-05-05 20:22 ` Jose Rivera
2015-05-05 20:40 ` Scott Wood
2015-05-06 6:42 ` Dan Carpenter
2015-05-05 19:42 ` Scott Wood
2015-05-05 20:26 ` Jose Rivera
2015-04-28 17:39 ` [PATCH 2/7] staging: fsl_-mc: add device binding path 'driver_override' J. German Rivera
2015-04-28 17:39 ` [PATCH 3/7] staging: fsl-mc: Propagate driver_override for a child DPRC's children J. German Rivera
2015-04-28 17:39 ` [PATCH 4/7] staging: fsl-mc: Upgraded MC bus driver to match MC fw 7.0.0 J. German Rivera
2015-04-30 12:12 ` Dan Carpenter
2015-05-04 23:58 ` Jose Rivera
2015-05-05 8:51 ` Dan Carpenter
2015-04-28 17:39 ` [PATCH 5/7] staging: fsl-mc: Allow the MC bus driver to run without GIC support J. German Rivera
2015-04-28 17:39 ` [PATCH 6/7] staging: fsl-mc: Add locking to serialize mc_send_command() calls J. German Rivera
2015-04-30 12:59 ` Dan Carpenter
2015-05-05 16:20 ` Jose Rivera
2015-04-28 17:39 ` [PATCH 7/7] staging: fsl-mc: Use DPMCP IRQ and completion var to wait for MC J. German Rivera
2015-04-30 13:01 ` Dan Carpenter
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=20150505084830.GL16501@mwanda \
--to=dan.carpenter@oracle.com \
--cc=German.Rivera@freescale.com \
--cc=R89243@freescale.com \
--cc=agraf@suse.de \
--cc=arnd@arndb.de \
--cc=bhamciu1@freescale.com \
--cc=bhupesh.sharma@freescale.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=itai.katz@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nir.erez@freescale.com \
--cc=richard.schmitt@freescale.com \
--cc=scottwood@freescale.com \
--cc=stuart.yoder@freescale.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.