From: "Antonino A. Daplas" Do a symbol_put() for each symbol_get() in savagefb. Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton --- 25-akpm/drivers/video/savage/savagefb-i2c.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletion(-) diff -puN drivers/video/savage/savagefb-i2c.c~fbdev-do-a-symbol_put-for-each-symbol_get-in-savagefb drivers/video/savage/savagefb-i2c.c --- 25/drivers/video/savage/savagefb-i2c.c~fbdev-do-a-symbol_put-for-each-symbol_get-in-savagefb Thu Dec 23 14:11:12 2004 +++ 25-akpm/drivers/video/savage/savagefb-i2c.c Thu Dec 23 14:11:12 2004 @@ -163,12 +163,15 @@ static int savage_setup_i2c_bus(struct s udelay(20); rc = add_bus(&chan->adapter); + if (rc == 0) dev_dbg(&chan->par->pcidev->dev, "I2C bus %s registered.\n", name); else dev_warn(&chan->par->pcidev->dev, "Failed to register I2C bus %s.\n", name); + + symbol_put(i2c_bit_add_bus); } else chan->par = NULL; @@ -212,8 +215,10 @@ void savagefb_delete_i2c_busses(struct f int (*del_bus)(struct i2c_adapter *) = symbol_get(i2c_bit_del_bus); - if (del_bus && par->chan.par) + if (del_bus && par->chan.par) { del_bus(&par->chan.adapter); + symbol_put(i2c_bit_del_bus); + } par->chan.par = NULL; } @@ -239,6 +244,7 @@ static u8 *savage_do_probe_i2c_edid(stru if (transfer && chan->par) { buf = kmalloc(EDID_LENGTH, GFP_KERNEL); + if (buf) { msgs[1].buf = buf; @@ -249,6 +255,8 @@ static u8 *savage_do_probe_i2c_edid(stru buf = NULL; } } + + symbol_put(i2c_transfer); } return buf; _