<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/s390/char, branch linux-3.7.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.7.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.7.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-11-15T15:33:09Z</updated>
<entry>
<title>s390/3215: fix tty close handling</title>
<updated>2012-11-15T15:33:09Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2012-11-15T08:22:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ae289dc1f474ff380e9d7601f02e4d766cbba408'/>
<id>urn:sha1:ae289dc1f474ff380e9d7601f02e4d766cbba408</id>
<content type='text'>
The 3215 console always has the RAW3215_FIXED flag set, which causes
raw3215_shutdown() not to wait for outstanding I/O requests if an attached
tty gets closed.
The flag however can be simply removed, so we can guarantee that all requests
belonging to the tty have been processed when the tty is closed.

However the tasklet that belongs to the 3215 device may be scheduled even if
there is no tty attached anymore, since we have a race between console and tty
processing.
Thefore unconditional tty_wakekup() in raw3215_wakeup() can cause the following
NULL pointer dereference:

3.465368 Unable to handle kernel pointer dereference at virtual kernel address (null)
3.465448 Oops: 0004 #1 SMP
3.465454 Modules linked in:
3.465459 CPU: 1 Not tainted 3.6.0 #1
3.465462 Process swapper/1 (pid: 0, task: 000000003ffa4428, ksp: 000000003ffb7ce0)
3.465466 Krnl PSW : 0404100180000000 0000000000162f86 (__wake_up+0x46/0xb8)
3.465480            R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:0 CC:1 PM:0 EA:3
         Krnl GPRS: fffffffffffffffe 0000000000000000 0000000000000160 0000000000000001
3.465492            0000000000000001 0000000000000004 0000000000000004 000000000096b490
3.465499            0000000000000001 0000000000000100 0000000000000001 0000000000000001
3.465506            070000003fc87d60 0000000000000160 000000003fc87d68 000000003fc87d00
3.465526 Krnl Code: 0000000000162f76: e3c0f0a80004      lg      %r12,168(%r15)
                    0000000000162f7c: 58000370          l       %r0,880
                   #0000000000162f80: c007ffffffff00    xilf    %r0,4294967295
                   &gt;0000000000162f86: ba102000          cs      %r1,%r0,0(%r2)
                    0000000000162f8a: 1211              ltr     %r1,%r1
                    0000000000162f8c: a774002f          brc     7,162fea
                    0000000000162f90: b904002d          lgr     %r2,%r13
                    0000000000162f94: b904003a          lgr     %r3,%r10
3.465597 Call Trace:
3.465599 (&lt;0400000000000000&gt; 0x400000000000000)
3.465602  &lt;000000000048c77e&gt; raw3215_wakeup+0x2e/0x40
3.465607  &lt;0000000000134d66&gt; tasklet_action+0x96/0x168
3.465612  &lt;000000000013423c&gt; __do_softirq+0xd8/0x21c
3.465615  &lt;0000000000134678&gt; irq_exit+0xa8/0xac
3.465617  &lt;000000000046c232&gt; do_IRQ+0x182/0x248
3.465621  &lt;00000000005c8296&gt; io_return+0x0/0x8
3.465625  &lt;00000000005c7cac&gt; vtime_stop_cpu+0x4c/0xb8
3.465629 (&lt;0000000000194e06&gt; tick_nohz_idle_enter+0x4e/0x74)
3.465633  &lt;0000000000104760&gt; cpu_idle+0x170/0x184
3.465636  &lt;00000000005b5182&gt; smp_start_secondary+0xd6/0xe0
3.465641  &lt;00000000005c86be&gt; restart_int_handler+0x56/0x6c
3.465643  &lt;0000000000000000&gt; 0x0
3.465645 Last Breaking-Event-Address:
3.465647  &lt;0000000000403136&gt; tty_wakeup+0x46/0x98
3.465652
3.465654 Kernel panic - not syncing: Fatal exception in interrupt
01: HCPGIR450W CP entered; disabled wait PSW 00020001 80000000 00000000 0010F63C

The easiest solution is simply to check if tty is NULL in the tasklet.
If it is NULL nothing is to do (no tty attached), otherwise tty_wakeup()
can be called, since we hold a reference to the tty.
This is not nice... but it is a small patch and it works.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'tty-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty</title>
<updated>2012-10-01T19:26:52Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2012-10-01T19:26:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3498d13b8090c0b0ef911409fbc503a7c4cca6ef'/>
<id>urn:sha1:3498d13b8090c0b0ef911409fbc503a7c4cca6ef</id>
<content type='text'>
Pull TTY changes from Greg Kroah-Hartman:
 "As we skipped the merge window for 3.6-rc1 for the tty tree,
  everything is now settled down and working properly, so we are ready
  for 3.7-rc1.  Here's the patchset, it's big, but the large changes are
  removing a firmware file and adding a staging tty driver (it depended
  on the tty core changes, so it's going through this tree instead of
  the staging tree.)

  All of these patches have been in the linux-next tree for a while.

  Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;"

Fix up more-or-less trivial conflicts in
 - drivers/char/pcmcia/synclink_cs.c:
    tty NULL dereference fix vs tty_port_cts_enabled() helper function
 - drivers/staging/{Kconfig,Makefile}:
    add-add conflict (dgrp driver added close to other staging drivers)
 - drivers/staging/ipack/devices/ipoctal.c:
    "split ipoctal_channel from iopctal" vs "TTY: use tty_port_register_device"

* tag 'tty-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (235 commits)
  tty/serial: Add kgdb_nmi driver
  tty/serial/amba-pl011: Quiesce interrupts in poll_get_char
  tty/serial/amba-pl011: Implement poll_init callback
  tty/serial/core: Introduce poll_init callback
  kdb: Turn KGDB_KDB=n stubs into static inlines
  kdb: Implement disable_nmi command
  kernel/debug: Mask KGDB NMI upon entry
  serial: pl011: handle corruption at high clock speeds
  serial: sccnxp: Make 'default' choice in switch last
  serial: sccnxp: Remove mask termios caps for SW flow control
  serial: sccnxp: Report actual baudrate back to core
  serial: samsung: Add poll_get_char &amp; poll_put_char
  Powerpc 8xx CPM_UART setting MAXIDL register proportionaly to baud rate
  Powerpc 8xx CPM_UART maxidl should not depend on fifo size
  Powerpc 8xx CPM_UART too many interrupts
  Powerpc 8xx CPM_UART desynchronisation
  serial: set correct baud_base for EXSYS EX-41092 Dual 16950
  serial: omap: fix the reciever line error case
  8250: blacklist Winbond CIR port
  8250_pnp: do pnp probe before legacy probe
  ...
</content>
</entry>
<entry>
<title>drivers/s390/char/monreader.c: fix error return code</title>
<updated>2012-09-26T13:45:26Z</updated>
<author>
<name>Peter Senna Tschudin</name>
</author>
<published>2012-09-17T08:12:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=72abaadf25f2bc6098740622e4ed526775b197f9'/>
<id>urn:sha1:72abaadf25f2bc6098740622e4ed526775b197f9</id>
<content type='text'>
Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// &lt;smpl&gt;
(
if@p1 (\(ret &lt; 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &amp;ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// &lt;/smpl&gt;

Signed-off-by: Peter Senna Tschudin &lt;peter.senna@gmail.com&gt;
Signed-off-by: Gerald Schaefer &lt;gerald.schaefer@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/tape: remove even more tape block leftovers</title>
<updated>2012-09-26T13:45:20Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2012-09-14T10:30:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e37b0cbb8edf64dc87ae95831c177db6c6d3b5c'/>
<id>urn:sha1:0e37b0cbb8edf64dc87ae95831c177db6c6d3b5c</id>
<content type='text'>
Fix this compile error:

In file included from drivers/s390/char/tape_core.c:29:0:
drivers/s390/char/tape_std.h:103:66: warning: ‘struct request’ declared inside parameter list [enabled by default]

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/vmlogrdr: change return value from -ENOSYS to -EOPNOTSUPP</title>
<updated>2012-09-26T13:45:16Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2012-09-06T15:35:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=745e967a49b26725cc9f30105ff67c8fee8926d6'/>
<id>urn:sha1:745e967a49b26725cc9f30105ff67c8fee8926d6</id>
<content type='text'>
Changing the return value of vmlogrdr_open() to -EOPNOTSUPP if O_NONBLOCK
is specified shouldn't have any negative side effects.
Any existing user wouldn't specify that flag since it wouldn't work anyway.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/sclp: use -EOPNOTSUPP instead of -ENOSYS</title>
<updated>2012-09-26T13:45:13Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2012-09-06T13:00:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d06cbda69ffc89bdfcf4cb9d78b0e64c5c28e549'/>
<id>urn:sha1:d06cbda69ffc89bdfcf4cb9d78b0e64c5c28e549</id>
<content type='text'>
The return value was only internally used, so it's ok to change.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/3270: drop unused spinlock from struct con3270</title>
<updated>2012-09-26T13:45:11Z</updated>
<author>
<name>Jean Delvare</name>
</author>
<published>2012-09-06T07:55:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=94f2b9e25dc4d71b12cd16b6786cdef52b34a931'/>
<id>urn:sha1:94f2b9e25dc4d71b12cd16b6786cdef52b34a931</id>
<content type='text'>
I was checking why this spinlock was never initialized, but it turns
out it's not used anywhere, so we can drop it.

Signed-off-by: Jean Delvare &lt;khali@linux-fr.org&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>Merge 3.6-rc3 into tty-next</title>
<updated>2012-08-27T14:13:33Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
</author>
<published>2012-08-27T14:13:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e372dc6c62bf0246a07f3291a26c562cc8659fbd'/>
<id>urn:sha1:e372dc6c62bf0246a07f3291a26c562cc8659fbd</id>
<content type='text'>
This picks up all of the different fixes in Linus's tree that we also need here.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>TTY: tty3270, add tty install</title>
<updated>2012-08-13T23:53:14Z</updated>
<author>
<name>Jiri Slaby</name>
</author>
<published>2012-08-07T19:48:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=20cda6f25f9edaa26638fc32e88241af135d712d'/>
<id>urn:sha1:20cda6f25f9edaa26638fc32e88241af135d712d</id>
<content type='text'>
This has two outcomes:
* we give the TTY layer a tty_port
* we do not find the info structure every time open is called on that
  tty

In this case -&gt;install is the only thing we want to do. We do not need
-&gt;open at all. See the tty-&gt;count &gt; 1 check.

And since we take a reference in -&gt;install, we need also -&gt;cleanup to
drop the reference to a view.

Final note, see that we leave raw3270_find_view in place. It is
because views are removed even from module_exit.

Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Cc: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>TTY: con3215, add tty install</title>
<updated>2012-08-13T23:50:21Z</updated>
<author>
<name>Jiri Slaby</name>
</author>
<published>2012-08-07T19:47:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2281107457cacf44d60b8a97c5db1af27c3a716'/>
<id>urn:sha1:d2281107457cacf44d60b8a97c5db1af27c3a716</id>
<content type='text'>
This has two outcomes:
* we give the TTY layer a tty_port
* we do not find the info structure every time open is called on that
  tty

Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Cc: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
Acked-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
