diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/Kconfig | 1 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_si_intf.c | 10 | ||||
-rw-r--r-- | drivers/char/n_tty.c | 13 | ||||
-rw-r--r-- | drivers/char/synclink_gt.c | 2 | ||||
-rw-r--r-- | drivers/char/tty_io.c | 7 |
5 files changed, 25 insertions, 8 deletions
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 5dce3877eee5..595a925c62a9 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig | |||
@@ -196,6 +196,7 @@ config ESPSERIAL | |||
196 | config MOXA_INTELLIO | 196 | config MOXA_INTELLIO |
197 | tristate "Moxa Intellio support" | 197 | tristate "Moxa Intellio support" |
198 | depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI) | 198 | depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI) |
199 | select FW_LOADER | ||
199 | help | 200 | help |
200 | Say Y here if you have a Moxa Intellio multiport serial card. | 201 | Say Y here if you have a Moxa Intellio multiport serial card. |
201 | 202 | ||
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index 5a5455585c1d..192688344ed2 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
@@ -2352,10 +2352,16 @@ static int __devinit ipmi_of_probe(struct of_device *dev, | |||
2352 | 2352 | ||
2353 | info->si_type = (enum si_type) match->data; | 2353 | info->si_type = (enum si_type) match->data; |
2354 | info->addr_source = "device-tree"; | 2354 | info->addr_source = "device-tree"; |
2355 | info->io_setup = mem_setup; | ||
2356 | info->irq_setup = std_irq_setup; | 2355 | info->irq_setup = std_irq_setup; |
2357 | 2356 | ||
2358 | info->io.addr_type = IPMI_MEM_ADDR_SPACE; | 2357 | if (resource.flags & IORESOURCE_IO) { |
2358 | info->io_setup = port_setup; | ||
2359 | info->io.addr_type = IPMI_IO_ADDR_SPACE; | ||
2360 | } else { | ||
2361 | info->io_setup = mem_setup; | ||
2362 | info->io.addr_type = IPMI_MEM_ADDR_SPACE; | ||
2363 | } | ||
2364 | |||
2359 | info->io.addr_data = resource.start; | 2365 | info->io.addr_data = resource.start; |
2360 | 2366 | ||
2361 | info->io.regsize = regsize ? *regsize : DEFAULT_REGSIZE; | 2367 | info->io.regsize = regsize ? *regsize : DEFAULT_REGSIZE; |
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index 19105ec203f7..8096389b0dc2 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c | |||
@@ -282,16 +282,20 @@ static int opost(unsigned char c, struct tty_struct *tty) | |||
282 | if (O_ONLRET(tty)) | 282 | if (O_ONLRET(tty)) |
283 | tty->column = 0; | 283 | tty->column = 0; |
284 | if (O_ONLCR(tty)) { | 284 | if (O_ONLCR(tty)) { |
285 | if (space < 2) | 285 | if (space < 2) { |
286 | unlock_kernel(); | ||
286 | return -1; | 287 | return -1; |
288 | } | ||
287 | tty_put_char(tty, '\r'); | 289 | tty_put_char(tty, '\r'); |
288 | tty->column = 0; | 290 | tty->column = 0; |
289 | } | 291 | } |
290 | tty->canon_column = tty->column; | 292 | tty->canon_column = tty->column; |
291 | break; | 293 | break; |
292 | case '\r': | 294 | case '\r': |
293 | if (O_ONOCR(tty) && tty->column == 0) | 295 | if (O_ONOCR(tty) && tty->column == 0) { |
296 | unlock_kernel(); | ||
294 | return 0; | 297 | return 0; |
298 | } | ||
295 | if (O_OCRNL(tty)) { | 299 | if (O_OCRNL(tty)) { |
296 | c = '\n'; | 300 | c = '\n'; |
297 | if (O_ONLRET(tty)) | 301 | if (O_ONLRET(tty)) |
@@ -303,10 +307,13 @@ static int opost(unsigned char c, struct tty_struct *tty) | |||
303 | case '\t': | 307 | case '\t': |
304 | spaces = 8 - (tty->column & 7); | 308 | spaces = 8 - (tty->column & 7); |
305 | if (O_TABDLY(tty) == XTABS) { | 309 | if (O_TABDLY(tty) == XTABS) { |
306 | if (space < spaces) | 310 | if (space < spaces) { |
311 | unlock_kernel(); | ||
307 | return -1; | 312 | return -1; |
313 | } | ||
308 | tty->column += spaces; | 314 | tty->column += spaces; |
309 | tty->ops->write(tty, " ", spaces); | 315 | tty->ops->write(tty, " ", spaces); |
316 | unlock_kernel(); | ||
310 | return 0; | 317 | return 0; |
311 | } | 318 | } |
312 | tty->column += spaces; | 319 | tty->column += spaces; |
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c index 2001b0e52dc6..55c1653be00c 100644 --- a/drivers/char/synclink_gt.c +++ b/drivers/char/synclink_gt.c | |||
@@ -916,7 +916,7 @@ static int put_char(struct tty_struct *tty, unsigned char ch) | |||
916 | { | 916 | { |
917 | struct slgt_info *info = tty->driver_data; | 917 | struct slgt_info *info = tty->driver_data; |
918 | unsigned long flags; | 918 | unsigned long flags; |
919 | int ret; | 919 | int ret = 0; |
920 | 920 | ||
921 | if (sanity_check(info, tty->name, "put_char")) | 921 | if (sanity_check(info, tty->name, "put_char")) |
922 | return 0; | 922 | return 0; |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 49c1a2267a55..e94bee032314 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -1215,10 +1215,11 @@ int tty_check_change(struct tty_struct *tty) | |||
1215 | 1215 | ||
1216 | if (!tty->pgrp) { | 1216 | if (!tty->pgrp) { |
1217 | printk(KERN_WARNING "tty_check_change: tty->pgrp == NULL!\n"); | 1217 | printk(KERN_WARNING "tty_check_change: tty->pgrp == NULL!\n"); |
1218 | goto out; | 1218 | goto out_unlock; |
1219 | } | 1219 | } |
1220 | if (task_pgrp(current) == tty->pgrp) | 1220 | if (task_pgrp(current) == tty->pgrp) |
1221 | goto out; | 1221 | goto out_unlock; |
1222 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); | ||
1222 | if (is_ignored(SIGTTOU)) | 1223 | if (is_ignored(SIGTTOU)) |
1223 | goto out; | 1224 | goto out; |
1224 | if (is_current_pgrp_orphaned()) { | 1225 | if (is_current_pgrp_orphaned()) { |
@@ -1229,6 +1230,8 @@ int tty_check_change(struct tty_struct *tty) | |||
1229 | set_thread_flag(TIF_SIGPENDING); | 1230 | set_thread_flag(TIF_SIGPENDING); |
1230 | ret = -ERESTARTSYS; | 1231 | ret = -ERESTARTSYS; |
1231 | out: | 1232 | out: |
1233 | return ret; | ||
1234 | out_unlock: | ||
1232 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); | 1235 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); |
1233 | return ret; | 1236 | return ret; |
1234 | } | 1237 | } |