Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be324797 authored by Akinobu Mita's avatar Akinobu Mita Committed by Linus Torvalds
Browse files

i2o: fix notifiers when max_drivers is configured



Maximum number of I2O drivers which could be registered is configurable by
max_drivers module parameter.

But the module parameter is ignored and default value (I2O_MAX_DRIVERS = 8)
is used in the loops to notify all registered drivers.

Cc: Markus Lidel <Markus.Lidel@shadowconnect.com>
Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e578e9a1
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/workqueue.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/log2.h>
#include "core.h"

#define OSM_NAME	"i2o"
@@ -260,7 +261,7 @@ void i2o_driver_notify_controller_add_all(struct i2o_controller *c)
	int i;
	struct i2o_driver *drv;

	for (i = 0; i < I2O_MAX_DRIVERS; i++) {
	for (i = 0; i < i2o_max_drivers; i++) {
		drv = i2o_drivers[i];

		if (drv)
@@ -280,7 +281,7 @@ void i2o_driver_notify_controller_remove_all(struct i2o_controller *c)
	int i;
	struct i2o_driver *drv;

	for (i = 0; i < I2O_MAX_DRIVERS; i++) {
	for (i = 0; i < i2o_max_drivers; i++) {
		drv = i2o_drivers[i];

		if (drv)
@@ -299,7 +300,7 @@ void i2o_driver_notify_device_add_all(struct i2o_device *i2o_dev)
	int i;
	struct i2o_driver *drv;

	for (i = 0; i < I2O_MAX_DRIVERS; i++) {
	for (i = 0; i < i2o_max_drivers; i++) {
		drv = i2o_drivers[i];

		if (drv)
@@ -318,7 +319,7 @@ void i2o_driver_notify_device_remove_all(struct i2o_device *i2o_dev)
	int i;
	struct i2o_driver *drv;

	for (i = 0; i < I2O_MAX_DRIVERS; i++) {
	for (i = 0; i < i2o_max_drivers; i++) {
		drv = i2o_drivers[i];

		if (drv)
@@ -340,8 +341,7 @@ int __init i2o_driver_init(void)
	spin_lock_init(&i2o_drivers_lock);

	if ((i2o_max_drivers < 2) || (i2o_max_drivers > 64) ||
	    ((i2o_max_drivers ^ (i2o_max_drivers - 1)) !=
	     (2 * i2o_max_drivers - 1))) {
	    !is_power_of_2(i2o_max_drivers)) {
		osm_warn("max_drivers set to %d, but must be >=2 and <= 64 and "
			 "a power of 2\n", i2o_max_drivers);
		i2o_max_drivers = I2O_MAX_DRIVERS;
@@ -349,7 +349,7 @@ int __init i2o_driver_init(void)
	osm_info("max drivers = %d\n", i2o_max_drivers);

	i2o_drivers =
	    kzalloc(i2o_max_drivers * sizeof(*i2o_drivers), GFP_KERNEL);
	    kcalloc(i2o_max_drivers, sizeof(*i2o_drivers), GFP_KERNEL);
	if (!i2o_drivers)
		return -ENOMEM;