diff options
| author | Randy Dunlap <randy.dunlap@verizon.net> | 2003-04-29 21:58:30 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <greg@kroah.com> | 2003-04-29 21:58:30 -0700 |
| commit | 3a38ea66010499bc7284747c34c6775fe3837c9a (patch) | |
| tree | 5ab92f016b43f205f0322b0219af74825f229bbb | |
| parent | 58800fb0ece258aa0475210ccd09766c7beb581d (diff) | |
[PATCH] sidewinder: reduce stack usage
reduce stack usage in sw_connect() from 0x490 to 0x98 on P4 SMP (gcc 3.2);
| -rw-r--r-- | drivers/input/joystick/sidewinder.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/input/joystick/sidewinder.c b/drivers/input/joystick/sidewinder.c index e24db2de61f1..23bc5f96a908 100644 --- a/drivers/input/joystick/sidewinder.c +++ b/drivers/input/joystick/sidewinder.c @@ -573,8 +573,8 @@ static void sw_connect(struct gameport *gameport, struct gameport_dev *dev) { struct sw *sw; int i, j, k, l; - unsigned char buf[SW_LENGTH]; - unsigned char idbuf[SW_LENGTH]; + unsigned char *buf = NULL; /* [SW_LENGTH] */ + unsigned char *idbuf = NULL; /* [SW_LENGTH] */ unsigned char m = 1; char comment[40]; @@ -583,6 +583,11 @@ static void sw_connect(struct gameport *gameport, struct gameport_dev *dev) if (!(sw = kmalloc(sizeof(struct sw), GFP_KERNEL))) return; memset(sw, 0, sizeof(struct sw)); + buf = kmalloc(SW_LENGTH, GFP_KERNEL); + idbuf = kmalloc(SW_LENGTH, GFP_KERNEL); + if (!buf || !idbuf) + goto fail1; + gameport->private = sw; sw->gameport = gameport; @@ -739,6 +744,8 @@ static void sw_connect(struct gameport *gameport, struct gameport_dev *dev) return; fail2: gameport_close(gameport); fail1: kfree(sw); + kfree(buf); + kfree(idbuf); } static void sw_disconnect(struct gameport *gameport) |
