strange prink_debug output with dev_path

Eric W. Biederman ebiederman at lnxi.com
Wed Dec 1 10:21:01 CET 2004


YhLu <YhLu at tyan.com> writes:

> What is the difference between 
>         printk_debug("smbus:  %s[%d]->",  dev_path(dev->bus->dev),
> dev->bus->link );
>         printk_debug("%s",  dev_path(dev));
> 
> and 
> 
>         printk_debug("smbus:  %s[%d]->%s",  dev_path(dev->bus->dev),
> dev->bus->link ,  dev_path(dev));
> 
> the first print 
> smbus:  PCI: 01:01.1[0]->I2C: 50
> 
> the second one print
> smbus:  PCI: 01:01.1[0]-> PCI: 01:01.1

dev_path returns the address of a statically allocated buffer
that it puts the path in.  That address is always the same.
So multiple calls to dev_path before printing the path are a
problem.

I had a hard time balancing convenience and safety when
implementing this.

If we need to fix this likely there are 2 possibilities.
1) Pass dev_path the address of a buffer, to write into.
2) Update printk to have a special format flag that
   performs the actions of dev_path.

Except for being a gotcha to watch out for I think we are ok.

Eric



More information about the coreboot mailing list