Fixes:
block/genhd.c:361: warning: ignoring return value of ‘class_register’, declared with attribute warn_unused_result
Signed-off-by: Roland McGrath <[email protected]>
---
block/genhd.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/block/genhd.c b/block/genhd.c
index c44527d..00da521 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int *part, void *data)
static int __init genhd_device_init(void)
{
- class_register(&block_class);
+ int error = class_register(&block_class);
+ if (unlikely(error))
+ return error;
bdev_map = kobj_map_init(base_probe, &block_class_lock);
blk_dev_init();
Roland McGrath wrote:
> Fixes:
>
> block/genhd.c:361: warning: ignoring return value of ‘class_register’, declared with attribute warn_unused_result
>
> Signed-off-by: Roland McGrath <[email protected]>
> ---
> block/genhd.c | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/block/genhd.c b/block/genhd.c
> index c44527d..00da521 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int *part, void *data)
>
> static int __init genhd_device_init(void)
> {
> - class_register(&block_class);
> + int error = class_register(&block_class);
> + if (unlikely(error))
> + return error;
> bdev_map = kobj_map_init(base_probe, &block_class_lock);
> blk_dev_init();
ACK
I was silly and simply tuned out this warning, assuming [wrongly] that
it was difficult to fix like the fs/partitions.c warning.
Shows how "helpful" those warnings are...
Jeff
On Wednesday 12 March 2008 14:25, Jeff Garzik wrote:
> Roland McGrath wrote:
> > Fixes:
> >
> > block/genhd.c:361: warning: ignoring return value of ‘class_register’,
> > declared with attribute warn_unused_result
> >
> > Signed-off-by: Roland McGrath <[email protected]>
> > ---
> > block/genhd.c | 4 +++-
> > 1 files changed, 3 insertions(+), 1 deletions(-)
> >
> > diff --git a/block/genhd.c b/block/genhd.c
> > index c44527d..00da521 100644
> > --- a/block/genhd.c
> > +++ b/block/genhd.c
> > @@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int
> > *part, void *data)
> >
> > static int __init genhd_device_init(void)
> > {
> > - class_register(&block_class);
> > + int error = class_register(&block_class);
> > + if (unlikely(error))
> > + return error;
> > bdev_map = kobj_map_init(base_probe, &block_class_lock);
> > blk_dev_init();
>
> ACK
>
> I was silly and simply tuned out this warning, assuming [wrongly] that
> it was difficult to fix like the fs/partitions.c warning.
>
> Shows how "helpful" those warnings are...
I don't see why? If the warning wasn't there, then Roland probably
wouldn't have noticed. So to me it shows that the warning actually
is helpful (without "") in this case.
Nick Piggin wrote:
> On Wednesday 12 March 2008 14:25, Jeff Garzik wrote:
>> Roland McGrath wrote:
>>> Fixes:
>>>
>>> block/genhd.c:361: warning: ignoring return value of ‘class_register’,
>>> declared with attribute warn_unused_result
>>>
>>> Signed-off-by: Roland McGrath <[email protected]>
>>> ---
>>> block/genhd.c | 4 +++-
>>> 1 files changed, 3 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/block/genhd.c b/block/genhd.c
>>> index c44527d..00da521 100644
>>> --- a/block/genhd.c
>>> +++ b/block/genhd.c
>>> @@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int
>>> *part, void *data)
>>>
>>> static int __init genhd_device_init(void)
>>> {
>>> - class_register(&block_class);
>>> + int error = class_register(&block_class);
>>> + if (unlikely(error))
>>> + return error;
>>> bdev_map = kobj_map_init(base_probe, &block_class_lock);
>>> blk_dev_init();
>> ACK
>>
>> I was silly and simply tuned out this warning, assuming [wrongly] that
>> it was difficult to fix like the fs/partitions.c warning.
>>
>> Shows how "helpful" those warnings are...
>
> I don't see why? If the warning wasn't there, then Roland probably
> wouldn't have noticed. So to me it shows that the warning actually
> is helpful (without "") in this case.
The point was more that the warnings are so often silly that it teaches
the human to tune out the warnings -- even when they turn out to reveal
real problems, as in this case.
I've been working quietly, the past several kernels, trying to kill most
compiler warnings, so I've been paying close attention to this sort of
stuff in general.
Jeff
On Wednesday 12 March 2008 14:53, Jeff Garzik wrote:
> Nick Piggin wrote:
> > On Wednesday 12 March 2008 14:25, Jeff Garzik wrote:
> >> Roland McGrath wrote:
> >>> Fixes:
> >>>
> >>> block/genhd.c:361: warning: ignoring return value of ‘class_register’,
> >>> declared with attribute warn_unused_result
> >>>
> >>> Signed-off-by: Roland McGrath <[email protected]>
> >>> ---
> >>> block/genhd.c | 4 +++-
> >>> 1 files changed, 3 insertions(+), 1 deletions(-)
> >>>
> >>> diff --git a/block/genhd.c b/block/genhd.c
> >>> index c44527d..00da521 100644
> >>> --- a/block/genhd.c
> >>> +++ b/block/genhd.c
> >>> @@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int
> >>> *part, void *data)
> >>>
> >>> static int __init genhd_device_init(void)
> >>> {
> >>> - class_register(&block_class);
> >>> + int error = class_register(&block_class);
> >>> + if (unlikely(error))
> >>> + return error;
> >>> bdev_map = kobj_map_init(base_probe, &block_class_lock);
> >>> blk_dev_init();
> >>
> >> ACK
> >>
> >> I was silly and simply tuned out this warning, assuming [wrongly] that
> >> it was difficult to fix like the fs/partitions.c warning.
> >>
> >> Shows how "helpful" those warnings are...
> >
> > I don't see why? If the warning wasn't there, then Roland probably
> > wouldn't have noticed. So to me it shows that the warning actually
> > is helpful (without "") in this case.
>
> The point was more that the warnings are so often silly that it teaches
> the human to tune out the warnings -- even when they turn out to reveal
> real problems, as in this case.
But the must_check warning? fs/partitions/check.c warning seems like it
is still a real error, whether or not it is hard to fix.
> I've been working quietly, the past several kernels, trying to kill most
> compiler warnings, so I've been paying close attention to this sort of
> stuff in general.
If you tune out the must_check warnings, then how is that better than
not having them at all? In either case, you'd have missed this genhd
bug(let).
On Wed, 12 Mar 2008, Nick Piggin wrote:
>
> If you tune out the must_check warnings, then how is that better than
> not having them at all? In either case, you'd have missed this genhd
> bug(let).
Quite frankly, there have historically been too many people who just added
"must_check" to their function prototypes because they thought they were
oh-so-important. Which means that at least _I_ tend to just ignore them
(and have asked people to remove some when they get too annoying).
So I'm not at all surprised that people tune them out. They have become
debased by being overused.
Linus