<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/rtc/rtc-dev.c, branch linux-2.6.26.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>rtc: fix kernel panic on second use of SIGIO nofitication</title>
<updated>2008-10-09T03:23:11+00:00</updated>
<author>
<name>Marcin Slusarz</name>
<email>marcin.slusarz@gmail.com</email>
</author>
<published>2008-10-04T01:25:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=eb07718d62cfd8da699a8127110fbb9fa5a18663'/>
<id>eb07718d62cfd8da699a8127110fbb9fa5a18663</id>
<content type='text'>
commit 2e4a75cdcb89ff53bb182dda3a6dcdc14befe007 upstream

When userspace uses SIGIO notification and forgets to disable it before
closing file descriptor, rtc-&gt;async_queue contains stale pointer to struct
file.  When user space enables again SIGIO notification in different
process, kernel dereferences this (poisoned) pointer and crashes.

So disable SIGIO notification on close.

Kernel panic:
(second run of qemu (requires echo 1024 &gt; /sys/class/rtc/rtc0/max_user_freq))

general protection fault: 0000 [1] PREEMPT
CPU 0
Modules linked in: af_packet snd_pcm_oss snd_mixer_oss snd_seq_oss snd_seq_midi_event snd_seq usbhid tuner tea5767 tda8290 tuner_xc2028 xc5000 tda9887 tuner_simple tuner_types mt20xx tea5761 tda9875 uhci_hcd ehci_hcd usbcore bttv snd_via82xx snd_ac97_codec ac97_bus snd_pcm snd_timer ir_common compat_ioctl32 snd_page_alloc videodev v4l1_compat snd_mpu401_uart snd_rawmidi v4l2_common videobuf_dma_sg videobuf_core snd_seq_device snd btcx_risc soundcore tveeprom i2c_viapro
Pid: 5781, comm: qemu-system-x86 Not tainted 2.6.27-rc6 #363
RIP: 0010:[&lt;ffffffff8024f891&gt;]  [&lt;ffffffff8024f891&gt;] __lock_acquire+0x3db/0x73f
RSP: 0000:ffffffff80674cb8  EFLAGS: 00010002
RAX: ffff8800224c62f0 RBX: 0000000000000046 RCX: 0000000000000002
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8800224c62f0
RBP: ffffffff80674d08 R08: 0000000000000002 R09: 0000000000000001
R10: ffffffff80238941 R11: 0000000000000001 R12: 0000000000000000
R13: 6b6b6b6b6b6b6b6b R14: ffff88003a450080 R15: 0000000000000000
FS:  00007f98b69516f0(0000) GS:ffffffff80623200(0000) knlGS:00000000f7cc86d0
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000a87000 CR3: 0000000022598000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process qemu-system-x86 (pid: 5781, threadinfo ffff880028812000, task ffff88003a450080)
Stack:  ffffffff80674cf8 0000000180238440 0000000200000002 0000000000000000
 ffff8800224c62f0 0000000000000046 0000000000000000 0000000000000002
 0000000000000002 0000000000000000 ffffffff80674d68 ffffffff8024fc7a
Call Trace:
 &lt;IRQ&gt;  [&lt;ffffffff8024fc7a&gt;] lock_acquire+0x85/0xa9
 [&lt;ffffffff8029cb62&gt;] ? send_sigio+0x2a/0x184
 [&lt;ffffffff80491d1f&gt;] _read_lock+0x3e/0x4a
 [&lt;ffffffff8029cb62&gt;] ? send_sigio+0x2a/0x184
 [&lt;ffffffff8029cb62&gt;] send_sigio+0x2a/0x184
 [&lt;ffffffff8024fb97&gt;] ? __lock_acquire+0x6e1/0x73f
 [&lt;ffffffff8029cd4d&gt;] ? kill_fasync+0x2c/0x4e
 [&lt;ffffffff8029cd10&gt;] __kill_fasync+0x54/0x65
 [&lt;ffffffff8029cd5b&gt;] kill_fasync+0x3a/0x4e
 [&lt;ffffffff80402896&gt;] rtc_update_irq+0x9c/0xa5
 [&lt;ffffffff80404640&gt;] cmos_interrupt+0xae/0xc0
 [&lt;ffffffff8025d1c1&gt;] handle_IRQ_event+0x25/0x5a
 [&lt;ffffffff8025e5e4&gt;] handle_edge_irq+0xdd/0x123
 [&lt;ffffffff8020da34&gt;] do_IRQ+0xe4/0x144
 [&lt;ffffffff8020bad6&gt;] ret_from_intr+0x0/0xf
 &lt;EOI&gt;  [&lt;ffffffff8026fdc2&gt;] ? __alloc_pages_internal+0xe7/0x3ad
 [&lt;ffffffff8033fe67&gt;] ? clear_page_c+0x7/0x10
 [&lt;ffffffff8026fc10&gt;] ? get_page_from_freelist+0x385/0x450
 [&lt;ffffffff8026fdc2&gt;] ? __alloc_pages_internal+0xe7/0x3ad
 [&lt;ffffffff80280aac&gt;] ? anon_vma_prepare+0x2e/0xf6
 [&lt;ffffffff80279400&gt;] ? handle_mm_fault+0x227/0x6a5
 [&lt;ffffffff80494716&gt;] ? do_page_fault+0x494/0x83f
 [&lt;ffffffff8049251d&gt;] ? error_exit+0x0/0xa9

Code: cc 41 39 45 28 74 24 e8 5e 1d 0f 00 85 c0 0f 84 6a 03 00 00 83 3d 8f a9 aa 00 00 be 47 03 00 00 0f 84 6a 02 00 00 e9 53 03 00 00 &lt;41&gt; ff 85 38 01 00 00 45 8b be 90 06 00 00 41 83 ff 2f 76 24 e8
RIP  [&lt;ffffffff8024f891&gt;] __lock_acquire+0x3db/0x73f
 RSP &lt;ffffffff80674cb8&gt;
---[ end trace 431877d860448760 ]---
Kernel panic - not syncing: Aiee, killing interrupt handler!

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Alessandro Zummo &lt;alessandro.zummo@towertech.it&gt;
Acked-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 2e4a75cdcb89ff53bb182dda3a6dcdc14befe007 upstream

When userspace uses SIGIO notification and forgets to disable it before
closing file descriptor, rtc-&gt;async_queue contains stale pointer to struct
file.  When user space enables again SIGIO notification in different
process, kernel dereferences this (poisoned) pointer and crashes.

So disable SIGIO notification on close.

Kernel panic:
(second run of qemu (requires echo 1024 &gt; /sys/class/rtc/rtc0/max_user_freq))

general protection fault: 0000 [1] PREEMPT
CPU 0
Modules linked in: af_packet snd_pcm_oss snd_mixer_oss snd_seq_oss snd_seq_midi_event snd_seq usbhid tuner tea5767 tda8290 tuner_xc2028 xc5000 tda9887 tuner_simple tuner_types mt20xx tea5761 tda9875 uhci_hcd ehci_hcd usbcore bttv snd_via82xx snd_ac97_codec ac97_bus snd_pcm snd_timer ir_common compat_ioctl32 snd_page_alloc videodev v4l1_compat snd_mpu401_uart snd_rawmidi v4l2_common videobuf_dma_sg videobuf_core snd_seq_device snd btcx_risc soundcore tveeprom i2c_viapro
Pid: 5781, comm: qemu-system-x86 Not tainted 2.6.27-rc6 #363
RIP: 0010:[&lt;ffffffff8024f891&gt;]  [&lt;ffffffff8024f891&gt;] __lock_acquire+0x3db/0x73f
RSP: 0000:ffffffff80674cb8  EFLAGS: 00010002
RAX: ffff8800224c62f0 RBX: 0000000000000046 RCX: 0000000000000002
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8800224c62f0
RBP: ffffffff80674d08 R08: 0000000000000002 R09: 0000000000000001
R10: ffffffff80238941 R11: 0000000000000001 R12: 0000000000000000
R13: 6b6b6b6b6b6b6b6b R14: ffff88003a450080 R15: 0000000000000000
FS:  00007f98b69516f0(0000) GS:ffffffff80623200(0000) knlGS:00000000f7cc86d0
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000a87000 CR3: 0000000022598000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process qemu-system-x86 (pid: 5781, threadinfo ffff880028812000, task ffff88003a450080)
Stack:  ffffffff80674cf8 0000000180238440 0000000200000002 0000000000000000
 ffff8800224c62f0 0000000000000046 0000000000000000 0000000000000002
 0000000000000002 0000000000000000 ffffffff80674d68 ffffffff8024fc7a
Call Trace:
 &lt;IRQ&gt;  [&lt;ffffffff8024fc7a&gt;] lock_acquire+0x85/0xa9
 [&lt;ffffffff8029cb62&gt;] ? send_sigio+0x2a/0x184
 [&lt;ffffffff80491d1f&gt;] _read_lock+0x3e/0x4a
 [&lt;ffffffff8029cb62&gt;] ? send_sigio+0x2a/0x184
 [&lt;ffffffff8029cb62&gt;] send_sigio+0x2a/0x184
 [&lt;ffffffff8024fb97&gt;] ? __lock_acquire+0x6e1/0x73f
 [&lt;ffffffff8029cd4d&gt;] ? kill_fasync+0x2c/0x4e
 [&lt;ffffffff8029cd10&gt;] __kill_fasync+0x54/0x65
 [&lt;ffffffff8029cd5b&gt;] kill_fasync+0x3a/0x4e
 [&lt;ffffffff80402896&gt;] rtc_update_irq+0x9c/0xa5
 [&lt;ffffffff80404640&gt;] cmos_interrupt+0xae/0xc0
 [&lt;ffffffff8025d1c1&gt;] handle_IRQ_event+0x25/0x5a
 [&lt;ffffffff8025e5e4&gt;] handle_edge_irq+0xdd/0x123
 [&lt;ffffffff8020da34&gt;] do_IRQ+0xe4/0x144
 [&lt;ffffffff8020bad6&gt;] ret_from_intr+0x0/0xf
 &lt;EOI&gt;  [&lt;ffffffff8026fdc2&gt;] ? __alloc_pages_internal+0xe7/0x3ad
 [&lt;ffffffff8033fe67&gt;] ? clear_page_c+0x7/0x10
 [&lt;ffffffff8026fc10&gt;] ? get_page_from_freelist+0x385/0x450
 [&lt;ffffffff8026fdc2&gt;] ? __alloc_pages_internal+0xe7/0x3ad
 [&lt;ffffffff80280aac&gt;] ? anon_vma_prepare+0x2e/0xf6
 [&lt;ffffffff80279400&gt;] ? handle_mm_fault+0x227/0x6a5
 [&lt;ffffffff80494716&gt;] ? do_page_fault+0x494/0x83f
 [&lt;ffffffff8049251d&gt;] ? error_exit+0x0/0xa9

Code: cc 41 39 45 28 74 24 e8 5e 1d 0f 00 85 c0 0f 84 6a 03 00 00 83 3d 8f a9 aa 00 00 be 47 03 00 00 0f 84 6a 02 00 00 e9 53 03 00 00 &lt;41&gt; ff 85 38 01 00 00 45 8b be 90 06 00 00 41 83 ff 2f 76 24 e8
RIP  [&lt;ffffffff8024f891&gt;] __lock_acquire+0x3db/0x73f
 RSP &lt;ffffffff80674cb8&gt;
---[ end trace 431877d860448760 ]---
Kernel panic - not syncing: Aiee, killing interrupt handler!

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Alessandro Zummo &lt;alessandro.zummo@towertech.it&gt;
Acked-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rtc-cmos alarm acts as oneshot</title>
<updated>2008-02-06T18:41:13+00:00</updated>
<author>
<name>David Brownell</name>
<email>david-b@pacbell.net</email>
</author>
<published>2008-02-06T09:38:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8a0bdfd7a05f5bb0486fbe7146a2cf775957e95e'/>
<id>8a0bdfd7a05f5bb0486fbe7146a2cf775957e95e</id>
<content type='text'>
Start making the rtc-cmos alarm act more like a oneshot alarm by disabling
that alarm after its IRQ fires.  (ACPI hooks are also needed.)

The Linux RTC framework has previously been a bit vague in this area, but
any other behavior is problematic and not very portable.  RTCs with full
YYYY-MM-DD HH:MM[:SS] alarms won't have a problem here.  Only ones with
partial match criteria, with the most visible example being the PC RTC, get
confused.  (Because the criteria will match repeatedly.)

Update comments relating to that oneshot behavior and timezone handling.
(Timezones are another issue that's mostly visible with rtc-cmos.  That's
because PCs often dual-boot MS-Windows, which likes its RTC to match local
wall-clock time instead of UTC.)

Signed-off-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Start making the rtc-cmos alarm act more like a oneshot alarm by disabling
that alarm after its IRQ fires.  (ACPI hooks are also needed.)

The Linux RTC framework has previously been a bit vague in this area, but
any other behavior is problematic and not very portable.  RTCs with full
YYYY-MM-DD HH:MM[:SS] alarms won't have a problem here.  Only ones with
partial match criteria, with the most visible example being the PC RTC, get
confused.  (Because the criteria will match repeatedly.)

Update comments relating to that oneshot behavior and timezone handling.
(Timezones are another issue that's mostly visible with rtc-cmos.  That's
because PCs often dual-boot MS-Windows, which likes its RTC to match local
wall-clock time instead of UTC.)

Signed-off-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RTC: assure proper memory ordering with respect to RTC_DEV_BUSY flag</title>
<updated>2007-12-05T17:21:18+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2007-12-05T07:45:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=372a302e9a892229206aafca0352584a745bc5f3'/>
<id>372a302e9a892229206aafca0352584a745bc5f3</id>
<content type='text'>
We must make sure that the RTC_DEV_BUSY flag has proper lock semantics,
i.e.  that the RTC_DEV_BUSY stores clearing the flag don't get reordered
before the preceeding stores and loads and vice versa.

Spotted by Nick Piggin.

Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We must make sure that the RTC_DEV_BUSY flag has proper lock semantics,
i.e.  that the RTC_DEV_BUSY stores clearing the flag don't get reordered
before the preceeding stores and loads and vice versa.

Spotted by Nick Piggin.

Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RTC: convert mutex to bitfield</title>
<updated>2007-11-29T17:24:54+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2007-11-29T00:22:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8853c202b4a91713dbfb4d9b6e1c87cc2aa12392'/>
<id>8853c202b4a91713dbfb4d9b6e1c87cc2aa12392</id>
<content type='text'>
RTC code is using mutex to assure exclusive access to /dev/rtc.  This is
however wrong usage, as it leaves the mutex locked when returning into
userspace, which is unacceptable.

Convert rtc-&gt;char_lock into bit operation.

Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RTC code is using mutex to assure exclusive access to /dev/rtc.  This is
however wrong usage, as it leaves the mutex locked when returning into
userspace, which is unacceptable.

Convert rtc-&gt;char_lock into bit operation.

Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtc: allow validated RTC_PIE_ON for non-root</title>
<updated>2007-10-16T16:43:13+00:00</updated>
<author>
<name>Bryan Kadzban</name>
<email>bryan@kadzban.is-a-geek.net</email>
</author>
<published>2007-10-16T08:28:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9d013d3b14f4c81bdfe6c81fc506037d60007036'/>
<id>9d013d3b14f4c81bdfe6c81fc506037d60007036</id>
<content type='text'>
drivers/char/rtc.c allowed RTC_PIE_ON ioctls for non-root users, as long as
the current interval (set via RTC_IRQP_SET) is &lt;= max_user_freq.  Allow
RTC_PIE_ON under the same conditions when /dev/rtc* is handled by the rtc
subsystem.

Signed-off-by: Bryan Kadzban &lt;bryan@kdzbn.homelinux.net&gt;
Acked-by: Alessandro Zummo &lt;alessandro.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
drivers/char/rtc.c allowed RTC_PIE_ON ioctls for non-root users, as long as
the current interval (set via RTC_IRQP_SET) is &lt;= max_user_freq.  Allow
RTC_PIE_ON under the same conditions when /dev/rtc* is handled by the rtc
subsystem.

Signed-off-by: Bryan Kadzban &lt;bryan@kdzbn.homelinux.net&gt;
Acked-by: Alessandro Zummo &lt;alessandro.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtc-dev: no need to convert file-&gt;private_data to rtc device</title>
<updated>2007-10-16T16:43:13+00:00</updated>
<author>
<name>Mark Zhan</name>
<email>rongkai.zhan@windriver.com</email>
</author>
<published>2007-10-16T08:28:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=88efe137394f58fb5893013e123e4bcf444fd44b'/>
<id>88efe137394f58fb5893013e123e4bcf444fd44b</id>
<content type='text'>
In rtc-dev.c, when a rtc device is opened, file-&gt;private_data is already
attached with the rtc device pointer, so there is no need to call
to_rtc_device() to convert file-&gt;private_data to a rtc device pointer.

Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Mark Zhan &lt;rongkai.zhan@windriver.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In rtc-dev.c, when a rtc device is opened, file-&gt;private_data is already
attached with the rtc device pointer, so there is no need to call
to_rtc_device() to convert file-&gt;private_data to a rtc device pointer.

Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Mark Zhan &lt;rongkai.zhan@windriver.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RTC: periodic irq fix</title>
<updated>2007-10-16T16:43:13+00:00</updated>
<author>
<name>Alessandro Zummo</name>
<email>alessandro.zummo@towertech.it</email>
</author>
<published>2007-10-16T08:28:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d691eb901e044065de10756ea78a5758d457c7fd'/>
<id>d691eb901e044065de10756ea78a5758d457c7fd</id>
<content type='text'>
Add kernel/kernel and kernel/user locking for the periodic irq feature of
the rtc class.

PIE ioctls are also supported.

Signed-off-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add kernel/kernel and kernel/user locking for the periodic irq feature of
the rtc class.

PIE ioctls are also supported.

Signed-off-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtc-dev: Make RTC driver return ENOTTY instead of ENOIOCTLCMD</title>
<updated>2007-07-31T22:39:36+00:00</updated>
<author>
<name>Thomas Hommel</name>
<email>thomas.hommel@gefanuc.com</email>
</author>
<published>2007-07-31T07:37:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c8ed39ebe0cf490abd7bf7c77b728dd6fefb2cf8'/>
<id>c8ed39ebe0cf490abd7bf7c77b728dd6fefb2cf8</id>
<content type='text'>
Prevent the RTC driver from returning ENOIOCTLCMD to userspace.

Signed-off-by: Thomas Hommel &lt;thomas.hommel@gefanuc.com&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Prevent the RTC driver from returning ENOIOCTLCMD to userspace.

Signed-off-by: Thomas Hommel &lt;thomas.hommel@gefanuc.com&gt;
Acked-by: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtc-dev: return -ENOTTY in ioctl if irq_set_freq is not implemented by driver</title>
<updated>2007-07-17T17:23:09+00:00</updated>
<author>
<name>Hans-Christian Egtvedt</name>
<email>hcegtvedt@atmel.com</email>
</author>
<published>2007-07-17T11:05:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ac495bf8971f2dc9d401d892849977e86633ced6'/>
<id>ac495bf8971f2dc9d401d892849977e86633ced6</id>
<content type='text'>
Signed-off-by: Hans-Christian Egtvedt &lt;hcegtvedt@atmel.com&gt;
Cc: Haavard Skinnemoen &lt;hskinnemoen@atmel.com&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Hans-Christian Egtvedt &lt;hcegtvedt@atmel.com&gt;
Cc: Haavard Skinnemoen &lt;hskinnemoen@atmel.com&gt;
Cc: David Brownell &lt;david-b@pacbell.net&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtc: remove "RTC_ALM_SET mode" bugs</title>
<updated>2007-05-08T18:15:19+00:00</updated>
<author>
<name>David Brownell</name>
<email>david-b@pacbell.net</email>
</author>
<published>2007-05-08T07:34:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f8245c26886c912627ebc49f714e4491261224c4'/>
<id>f8245c26886c912627ebc49f714e4491261224c4</id>
<content type='text'>
This fixes a common glitch in how RTC drivers handle two "set alarm" modes,
by getting rid of the surprising/hidden one that was rarely implemented
correctly (and which could expose nonportable hardware-specific behavior).

The glitch comes from the /dev/rtcX logic implementing the legacy
RTC_ALM_SET (limited to 24 hours, needing RTC_AIE_ON) ioctl on top of the
RTC driver call providing access to the newer RTC_WKALM_SET (without those
limitations) by initializing the day/month/year fields to be invalid ...
that second mode.

Now, since few RTC drivers check those fields, and most hardware misbehaves
when faced with invalid date fields, many RTC drivers will set bogus alarm
times on those RTC_ALM_SET code paths.  (Several in-tree drivers have that
issue, and I also noticed it with code reviews on several new RTC drivers.)

This patch ensures that RTC drivers never see such invalid alarm fields, by
moving some logic out of rtc-omap into the RTC_ALM_SET code and adding an
explicit check (which will prevent the issue on other code paths).

Signed-off-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Scott Wood &lt;scottwood@freescale.com&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes a common glitch in how RTC drivers handle two "set alarm" modes,
by getting rid of the surprising/hidden one that was rarely implemented
correctly (and which could expose nonportable hardware-specific behavior).

The glitch comes from the /dev/rtcX logic implementing the legacy
RTC_ALM_SET (limited to 24 hours, needing RTC_AIE_ON) ioctl on top of the
RTC driver call providing access to the newer RTC_WKALM_SET (without those
limitations) by initializing the day/month/year fields to be invalid ...
that second mode.

Now, since few RTC drivers check those fields, and most hardware misbehaves
when faced with invalid date fields, many RTC drivers will set bogus alarm
times on those RTC_ALM_SET code paths.  (Several in-tree drivers have that
issue, and I also noticed it with code reviews on several new RTC drivers.)

This patch ensures that RTC drivers never see such invalid alarm fields, by
moving some logic out of rtc-omap into the RTC_ALM_SET code and adding an
explicit check (which will prevent the issue on other code paths).

Signed-off-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Scott Wood &lt;scottwood@freescale.com&gt;
Cc: Alessandro Zummo &lt;a.zummo@towertech.it&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
