Commit b3218a79 authored by Jiri Slaby's avatar Jiri Slaby Committed by Linus Torvalds

[PATCH] char: kill unneeded memsets

char, another tmp_buf cleanup

No need to allocate one page as a side buffer.  It's no more used.  Clean this
(de)allocs of this useless memory pages in char subtree.
Signed-off-by: default avatarJiri Slaby <jirislaby@gmail.com>
Acked-by: default avatarAlan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1d2c8eea
...@@ -112,17 +112,6 @@ static struct serial_state rs_table[1]; ...@@ -112,17 +112,6 @@ static struct serial_state rs_table[1];
#define NR_PORTS ARRAY_SIZE(rs_table) #define NR_PORTS ARRAY_SIZE(rs_table)
/*
* tmp_buf is used as a temporary buffer by serial_write. We need to
* lock it in case the copy_from_user blocks while swapping in a page,
* and some other program tries to do a serial write at the same time.
* Since the lock will only come under contention when the system is
* swapping and available memory is low, it makes sense to share one
* buffer across all the serial ports, since it significantly saves
* memory if large numbers of serial ports are open.
*/
static unsigned char *tmp_buf;
#include <asm/uaccess.h> #include <asm/uaccess.h>
#define serial_isroot() (capable(CAP_SYS_ADMIN)) #define serial_isroot() (capable(CAP_SYS_ADMIN))
...@@ -912,7 +901,7 @@ static int rs_write(struct tty_struct * tty, const unsigned char *buf, int count ...@@ -912,7 +901,7 @@ static int rs_write(struct tty_struct * tty, const unsigned char *buf, int count
if (serial_paranoia_check(info, tty->name, "rs_write")) if (serial_paranoia_check(info, tty->name, "rs_write"))
return 0; return 0;
if (!info->xmit.buf || !tmp_buf) if (!info->xmit.buf)
return 0; return 0;
local_save_flags(flags); local_save_flags(flags);
...@@ -1778,7 +1767,6 @@ static int rs_open(struct tty_struct *tty, struct file * filp) ...@@ -1778,7 +1767,6 @@ static int rs_open(struct tty_struct *tty, struct file * filp)
{ {
struct async_struct *info; struct async_struct *info;
int retval, line; int retval, line;
unsigned long page;
line = tty->index; line = tty->index;
if ((line < 0) || (line >= NR_PORTS)) { if ((line < 0) || (line >= NR_PORTS)) {
...@@ -1798,17 +1786,6 @@ static int rs_open(struct tty_struct *tty, struct file * filp) ...@@ -1798,17 +1786,6 @@ static int rs_open(struct tty_struct *tty, struct file * filp)
#endif #endif
info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0; info->tty->low_latency = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0;
if (!tmp_buf) {
page = get_zeroed_page(GFP_KERNEL);
if (!page) {
return -ENOMEM;
}
if (tmp_buf)
free_page(page);
else
tmp_buf = (unsigned char *) page;
}
/* /*
* If the port is the middle of closing, bail out now * If the port is the middle of closing, bail out now
*/ */
...@@ -2090,11 +2067,6 @@ static __exit void rs_exit(void) ...@@ -2090,11 +2067,6 @@ static __exit void rs_exit(void)
kfree(info); kfree(info);
} }
if (tmp_buf) {
free_page((unsigned long) tmp_buf);
tmp_buf = NULL;
}
release_mem_region(CUSTOM_PHYSADDR+0x30, 4); release_mem_region(CUSTOM_PHYSADDR+0x30, 4);
} }
......
...@@ -747,18 +747,6 @@ static struct cyclades_port cy_port[NR_PORTS]; ...@@ -747,18 +747,6 @@ static struct cyclades_port cy_port[NR_PORTS];
static int cy_next_channel; /* next minor available */ static int cy_next_channel; /* next minor available */
/*
* tmp_buf is used as a temporary buffer by serial_write. We need to
* lock it in case the copy_from_user blocks while swapping in a page,
* and some other program tries to do a serial write at the same time.
* Since the lock will only come under contention when the system is
* swapping and available memory is low, it makes sense to share one
* buffer across all the serial ports, since it significantly saves
* memory if large numbers of serial ports are open. This buffer is
* allocated when the first cy_open occurs.
*/
static unsigned char *tmp_buf;
/* /*
* This is used to look up the divisor speeds and the timeouts * This is used to look up the divisor speeds and the timeouts
* We're normally limited to 15 distinct baud rates. The extra * We're normally limited to 15 distinct baud rates. The extra
...@@ -2466,7 +2454,6 @@ cy_open(struct tty_struct *tty, struct file * filp) ...@@ -2466,7 +2454,6 @@ cy_open(struct tty_struct *tty, struct file * filp)
{ {
struct cyclades_port *info; struct cyclades_port *info;
int retval, line; int retval, line;
unsigned long page;
line = tty->index; line = tty->index;
if ((line < 0) || (NR_PORTS <= line)){ if ((line < 0) || (NR_PORTS <= line)){
...@@ -2545,15 +2532,6 @@ cy_open(struct tty_struct *tty, struct file * filp) ...@@ -2545,15 +2532,6 @@ cy_open(struct tty_struct *tty, struct file * filp)
printk("cyc:cy_open (%d): incrementing count to %d\n", printk("cyc:cy_open (%d): incrementing count to %d\n",
current->pid, info->count); current->pid, info->count);
#endif #endif
if (!tmp_buf) {
page = get_zeroed_page(GFP_KERNEL);
if (!page)
return -ENOMEM;
if (tmp_buf)
free_page(page);
else
tmp_buf = (unsigned char *) page;
}
/* /*
* If the port is the middle of closing, bail out now * If the port is the middle of closing, bail out now
...@@ -2832,7 +2810,7 @@ cy_write(struct tty_struct * tty, const unsigned char *buf, int count) ...@@ -2832,7 +2810,7 @@ cy_write(struct tty_struct * tty, const unsigned char *buf, int count)
return 0; return 0;
} }
if (!info->xmit_buf || !tmp_buf) if (!info->xmit_buf)
return 0; return 0;
CY_LOCK(info, flags); CY_LOCK(info, flags);
...@@ -5490,10 +5468,6 @@ cy_cleanup_module(void) ...@@ -5490,10 +5468,6 @@ cy_cleanup_module(void)
#endif #endif
} }
} }
if (tmp_buf) {
free_page((unsigned long) tmp_buf);
tmp_buf = NULL;
}
} /* cy_cleanup_module */ } /* cy_cleanup_module */
module_init(cy_init); module_init(cy_init);
......
...@@ -1113,11 +1113,8 @@ static void __exit epca_module_exit(void) ...@@ -1113,11 +1113,8 @@ static void __exit epca_module_exit(void)
ch = card_ptr[crd]; ch = card_ptr[crd];
for (count = 0; count < bd->numports; count++, ch++) for (count = 0; count < bd->numports; count++, ch++)
{ /* Begin for each port */ { /* Begin for each port */
if (ch) { if (ch && ch->tty)
if (ch->tty) tty_hangup(ch->tty);
tty_hangup(ch->tty);
kfree(ch->tmp_buf);
}
} /* End for each port */ } /* End for each port */
} /* End for each card */ } /* End for each card */
pci_unregister_driver (&epca_driver); pci_unregister_driver (&epca_driver);
...@@ -1635,16 +1632,6 @@ static void post_fep_init(unsigned int crd) ...@@ -1635,16 +1632,6 @@ static void post_fep_init(unsigned int crd)
init_waitqueue_head(&ch->close_wait); init_waitqueue_head(&ch->close_wait);
spin_unlock_irqrestore(&epca_lock, flags); spin_unlock_irqrestore(&epca_lock, flags);
ch->tmp_buf = kmalloc(ch->txbufsize,GFP_KERNEL);
if (!ch->tmp_buf) {
printk(KERN_ERR "POST FEP INIT : kmalloc failed for port 0x%x\n",i);
release_region((int)bd->port, 4);
while(i-- > 0)
kfree((ch--)->tmp_buf);
return;
} else
memset((void *)ch->tmp_buf,0,ch->txbufsize);
} /* End for each port */ } /* End for each port */
printk(KERN_INFO printk(KERN_INFO
......
...@@ -130,7 +130,6 @@ struct channel ...@@ -130,7 +130,6 @@ struct channel
unsigned long c_oflag; unsigned long c_oflag;
unsigned char __iomem *txptr; unsigned char __iomem *txptr;
unsigned char __iomem *rxptr; unsigned char __iomem *rxptr;
unsigned char *tmp_buf;
struct board_info *board; struct board_info *board;
struct board_chan __iomem *brdchan; struct board_chan __iomem *brdchan;
struct digi_struct digiext; struct digi_struct digiext;
......
...@@ -33,8 +33,6 @@ ...@@ -33,8 +33,6 @@
#define DEBUG #define DEBUG
static char * tmp_buf;
static int gs_debug; static int gs_debug;
#ifdef DEBUG #ifdef DEBUG
...@@ -205,7 +203,7 @@ int gs_write(struct tty_struct * tty, ...@@ -205,7 +203,7 @@ int gs_write(struct tty_struct * tty,
if (!tty) return -EIO; if (!tty) return -EIO;
port = tty->driver_data; port = tty->driver_data;
if (!port || !port->xmit_buf || !tmp_buf) if (!port || !port->xmit_buf)
return -EIO; return -EIO;
local_save_flags(flags); local_save_flags(flags);
...@@ -837,24 +835,9 @@ void gs_set_termios (struct tty_struct * tty, ...@@ -837,24 +835,9 @@ void gs_set_termios (struct tty_struct * tty,
int gs_init_port(struct gs_port *port) int gs_init_port(struct gs_port *port)
{ {
unsigned long flags; unsigned long flags;
unsigned long page;
func_enter (); func_enter ();
if (!tmp_buf) {
page = get_zeroed_page(GFP_KERNEL);
spin_lock_irqsave (&port->driver_lock, flags); /* Don't expect this to make a difference. */
if (tmp_buf)
free_page(page);
else
tmp_buf = (unsigned char *) page;
spin_unlock_irqrestore (&port->driver_lock, flags);
if (!tmp_buf) {
func_exit ();
return -ENOMEM;
}
}
if (port->flags & ASYNC_INITIALIZED) { if (port->flags & ASYNC_INITIALIZED) {
func_exit (); func_exit ();
return 0; return 0;
......
...@@ -81,7 +81,6 @@ ...@@ -81,7 +81,6 @@
static struct riscom_board * IRQ_to_board[16]; static struct riscom_board * IRQ_to_board[16];
static struct tty_driver *riscom_driver; static struct tty_driver *riscom_driver;
static unsigned char * tmp_buf;
static unsigned long baud_table[] = { static unsigned long baud_table[] = {
0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
...@@ -1124,7 +1123,7 @@ static int rc_write(struct tty_struct * tty, ...@@ -1124,7 +1123,7 @@ static int rc_write(struct tty_struct * tty,
bp = port_Board(port); bp = port_Board(port);
if (!tty || !port->xmit_buf || !tmp_buf) if (!tty || !port->xmit_buf)
return 0; return 0;
save_flags(flags); save_flags(flags);
...@@ -1612,11 +1611,6 @@ static inline int rc_init_drivers(void) ...@@ -1612,11 +1611,6 @@ static inline int rc_init_drivers(void)
if (!riscom_driver) if (!riscom_driver)
return -ENOMEM; return -ENOMEM;
if (!(tmp_buf = (unsigned char *) get_zeroed_page(GFP_KERNEL))) {
printk(KERN_ERR "rc: Couldn't get free page.\n");
put_tty_driver(riscom_driver);
return 1;
}
memset(IRQ_to_board, 0, sizeof(IRQ_to_board)); memset(IRQ_to_board, 0, sizeof(IRQ_to_board));
riscom_driver->owner = THIS_MODULE; riscom_driver->owner = THIS_MODULE;
riscom_driver->name = "ttyL"; riscom_driver->name = "ttyL";
...@@ -1629,7 +1623,6 @@ static inline int rc_init_drivers(void) ...@@ -1629,7 +1623,6 @@ static inline int rc_init_drivers(void)
riscom_driver->flags = TTY_DRIVER_REAL_RAW; riscom_driver->flags = TTY_DRIVER_REAL_RAW;
tty_set_operations(riscom_driver, &riscom_ops); tty_set_operations(riscom_driver, &riscom_ops);
if ((error = tty_register_driver(riscom_driver))) { if ((error = tty_register_driver(riscom_driver))) {
free_page((unsigned long)tmp_buf);
put_tty_driver(riscom_driver); put_tty_driver(riscom_driver);
printk(KERN_ERR "rc: Couldn't register RISCom/8 driver, " printk(KERN_ERR "rc: Couldn't register RISCom/8 driver, "
"error = %d\n", "error = %d\n",
...@@ -1657,7 +1650,6 @@ static void rc_release_drivers(void) ...@@ -1657,7 +1650,6 @@ static void rc_release_drivers(void)
save_flags(flags); save_flags(flags);
cli(); cli();
free_page((unsigned long)tmp_buf);
tty_unregister_driver(riscom_driver); tty_unregister_driver(riscom_driver);
put_tty_driver(riscom_driver); put_tty_driver(riscom_driver);
restore_flags(flags); restore_flags(flags);
......
...@@ -118,17 +118,6 @@ struct cyclades_port cy_port[] = { ...@@ -118,17 +118,6 @@ struct cyclades_port cy_port[] = {
}; };
#define NR_PORTS ARRAY_SIZE(cy_port) #define NR_PORTS ARRAY_SIZE(cy_port)
/*
* tmp_buf is used as a temporary buffer by serial_write. We need to
* lock it in case the copy_from_user blocks while swapping in a page,
* and some other program tries to do a serial write at the same time.
* Since the lock will only come under contention when the system is
* swapping and available memory is low, it makes sense to share one
* buffer across all the serial ports, since it significantly saves
* memory if large numbers of serial ports are open.
*/
static unsigned char *tmp_buf = 0;
/* /*
* This is used to look up the divisor speeds and the timeouts * This is used to look up the divisor speeds and the timeouts
* We're normally limited to 15 distinct baud rates. The extra * We're normally limited to 15 distinct baud rates. The extra
...@@ -1198,7 +1187,7 @@ cy_write(struct tty_struct * tty, ...@@ -1198,7 +1187,7 @@ cy_write(struct tty_struct * tty,
return 0; return 0;
} }
if (!tty || !info->xmit_buf || !tmp_buf){ if (!tty || !info->xmit_buf){
return 0; return 0;
} }
...@@ -1983,13 +1972,6 @@ cy_open(struct tty_struct *tty, struct file * filp) ...@@ -1983,13 +1972,6 @@ cy_open(struct tty_struct *tty, struct file * filp)
tty->driver_data = info; tty->driver_data = info;
info->tty = tty; info->tty = tty;
if (!tmp_buf) {
tmp_buf = (unsigned char *) get_zeroed_page(GFP_KERNEL);
if (!tmp_buf){
return -ENOMEM;
}
}
/* /*
* Start up serial port * Start up serial port
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment