Skip to content

Commit 18d2881

Browse files
Johannes Thumshirngregkh
authored andcommitted
mcb: Correctly initialize the bus's device
The mcb bus' device member wasn't correctly initialized and thus wasn't placed correctly into the driver model. Signed-off-by: Johannes Thumshirn <[email protected]> Reviewed-by: Andreas Werner <[email protected]> Tested-by: Andreas Werner <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent bc46b45 commit 18d2881

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

drivers/mcb/mcb-core.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,21 +187,34 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier)
187187
{
188188
struct mcb_bus *bus;
189189
int bus_nr;
190+
int rc;
190191

191192
bus = kzalloc(sizeof(struct mcb_bus), GFP_KERNEL);
192193
if (!bus)
193194
return ERR_PTR(-ENOMEM);
194195

195196
bus_nr = ida_simple_get(&mcb_ida, 0, 0, GFP_KERNEL);
196197
if (bus_nr < 0) {
197-
kfree(bus);
198-
return ERR_PTR(bus_nr);
198+
rc = bus_nr;
199+
goto err_free;
199200
}
200201

201-
INIT_LIST_HEAD(&bus->children);
202202
bus->bus_nr = bus_nr;
203203
bus->carrier = carrier;
204+
205+
device_initialize(&bus->dev);
206+
bus->dev.parent = carrier;
207+
bus->dev.bus = &mcb_bus_type;
208+
209+
dev_set_name(&bus->dev, "mcb:%d", bus_nr);
210+
rc = device_add(&bus->dev);
211+
if (rc)
212+
goto err_free;
213+
204214
return bus;
215+
err_free:
216+
kfree(bus);
217+
return ERR_PTR(rc);
205218
}
206219
EXPORT_SYMBOL_GPL(mcb_alloc_bus);
207220

include/linux/mcb.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@ struct mcb_device;
2121
/**
2222
* struct mcb_bus - MEN Chameleon Bus
2323
*
24-
* @dev: pointer to carrier device
25-
* @children: the child busses
24+
* @dev: bus device
25+
* @carrier: pointer to carrier device
2626
* @bus_nr: mcb bus number
2727
* @get_irq: callback to get IRQ number
2828
*/
2929
struct mcb_bus {
30-
struct list_head children;
3130
struct device dev;
3231
struct device *carrier;
3332
int bus_nr;

0 commit comments

Comments
 (0)