[PATCH] MTD + 2.6.13/2.6.14 OOPS in class_device_create() fix

Artem B. Bityutskiy dedekind at yandex.ru
Fri Dec 9 10:46:29 EST 2005


Hello,

Current MTD CVS head oopses in class_device_create().

This are because there is 2 calls in mtdchar.c which look like this:

class_device_create(mtd_class, NULL, MKDEV(MTD_CHAR_MAJOR, 
mtd->index*2), NULL, "mtd%d", mtd->index);

This is perfectly fine with 2.6.15-rc5, where class_device_create() has 
the following prototype:

struct class_device *class_device_create(struct class *cls, struct 
class_device *parent, dev_t devt, struct device *device, char *fmt, ...)

But it causes oops in 2.6.14.3, where class_device_create() has the 
following (different) prototype:

struct class_device *class_device_create(struct class *cls, dev_t devt, 
struct device *device, char *fmt, ...)

I.e., one more argument 'parent' was introduced in 2.6.15-rc5. And since 
the function accepts any number of arguments, it compiles well, but 
doesn't work.

Usually problems like this are solved by means of 
include/linux/mtd/compatmac.h, but in this case I have no idea how to 
solve this gracefully there.

As 2.6.15 is not yet out and 2.6.14 is still used, I offer the attached 
hotfix for now.

-- 
Best Regards,
Artem B. Bityutskiy,
St.-Petersburg, Russia.




More information about the linux-mtd mailing list