On Tue, 10 Oct 2006 14:32:33 +1000
Paul Mackerras <[email protected]> wrote:
> I am seeing a bunch of warnings about not checking the return value
> from device_create_file() for code like this (from
> arch/powerpc/kernel/pci_64.c):
>
> static ssize_t pci_show_devspec(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> struct pci_dev *pdev;
> struct device_node *np;
>
> pdev = to_pci_dev (dev);
> np = pci_device_to_OF_node(pdev);
> if (np == NULL || np->full_name == NULL)
> return 0;
> return sprintf(buf, "%s", np->full_name);
> }
> static DEVICE_ATTR(devspec, S_IRUGO, pci_show_devspec, NULL);
>
> void pcibios_add_platform_entries(struct pci_dev *pdev)
> {
> device_create_file(&pdev->dev, &dev_attr_devspec);
> }
>
> What bad thing could happen if device_create_file fails, other than
> that the "devspec" file doesn't appear in sysfs?
There are no super-strong reasons here, but if device_create_file() fails
then the required control files aren't there and the subsystem isn't
working as intended. If it's in a module then we should fail the modprobe.
If it's a bootup thing then best we can do is to panic. Or at least log
the event.
The most common cause of this is a programming error: we tried to create
the same entry twice. We want to know about that.
> I don't see how the
> error could lead to any null pointer dereference later on or anything
> like that. If some bad thing could happen, how do I avert that? If
> nothing bad will happen, why does device_create_file have __must_check
> on it?
Because it can fail. We need to take _some_ action if the setup failed - at
least report it so the user (and the kernel developers) know that something
is going wrong.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]