the drivers (in this specific case the scsi driver sym53c8xx_2) is using dev_info to dump strings. for example in the
drivers\scsi\sym53c8xx_2\sym_glue.c :
dev_info(&tp->starget->dev,
"tagged command queuing %s, command queue depth %d.\n",
lp->s.reqtags ? "enabled" : "disabled",
lp->started_limit);
The tp->starget->dev.driver is set to NULL in that case, which makes the dev_info crash.
In our device.h (that we patch) we define :
#define dev_info(dev, format, arg…) \
dev_printk(KERN_INFO , dev , format , ## arg)
And in the same file, a bit above:
#ifdef CONFIG_EVLOG
#include
#define dev_printk(level, dev, format, arg…) \
do { \
printk(level "%s %s: " format , (dev)->driver->name , (dev)->bus_id , ## arg); \
evl_printk((dev)->driver->name , 0, (level[1]-'0') , \
"%s %s: " format , (dev)->driver->name , (dev)->bus_id , ## arg); \
} while (0)
#else
#define dev_printk(level, dev, format, arg…) \
printk(level "%s %s: " format , (dev)->driver->name , (dev)->bus_id , ## arg)
#endif
The accesses to (dev)->driver->name are crashing the modules…because (dev)->driver==0 IDENTIFIER = WIND00112878
WIND00134145.zip is for 1.4
WIND00133951.zip is for 1.5
1. Unzip the patch under [install_dir]/updates
2. Install the patch CD by entering the patch CD directory and run setup_linux.
3. This is a source only patch so you will have to build the kernel
4. Issue a make fs and make the kernel in a configured directory.
5. Upload the kernel and rootfs into the target and boot it up.