* Two identical entries for "rtc" in /proc/devices
@ 2007-09-06 22:23 Chuck Ebbert
2007-09-15 7:44 ` Andrew Morton
0 siblings, 1 reply; 5+ messages in thread
From: Chuck Ebbert @ 2007-09-06 22:23 UTC (permalink / raw)
To: linux-kernel; +Cc: David Brownell
# ls -li
total 0
4026532007 -r--r--r-- 1 root root 0 Sep 6 18:18 nvram
4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
4026532056 -rw-r--r-- 1 root root 0 Sep 6 18:18 snd-page-alloc
kernel 2.6.22.6 on a Dell Precision 390:
# CONFIG_RTC is not set
# CONFIG_RTC_DEBUG is not set
CONFIG_GEN_RTC=y
CONFIG_GEN_RTC_X=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
CONFIG_RTC_DRV_CMOS=m
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_DS1742=m
# CONFIG_RTC_DRV_EP93XX is not set
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_MAX6900=m
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_RS5C372=m
# CONFIG_RTC_DRV_SA1100 is not set
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_X1205=m
CONFIG_RTC_DRV_V3020=m
CONFIG_HPET_EMULATE_RTC=y
CONFIG_EFI_RTC=y
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Two identical entries for "rtc" in /proc/devices
2007-09-06 22:23 Two identical entries for "rtc" in /proc/devices Chuck Ebbert
@ 2007-09-15 7:44 ` Andrew Morton
2007-09-15 18:50 ` David Brownell
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2007-09-15 7:44 UTC (permalink / raw)
To: Chuck Ebbert; +Cc: linux-kernel, David Brownell
On Thu, 06 Sep 2007 18:23:22 -0400 Chuck Ebbert <cebbert@redhat.com> wrote:
> # ls -li
> total 0
> 4026532007 -r--r--r-- 1 root root 0 Sep 6 18:18 nvram
> 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> 4026532056 -rw-r--r-- 1 root root 0 Sep 6 18:18 snd-page-alloc
Next -mm has
procfs-detect-duplicate-names.patch
procfs-detect-duplicate-names-fix.patch
procfs-detect-duplicate-names-fix-fix-2.patch
which will at least tell us who the second offender is.
I have a vague memory that this is due to selecting two different types of
rtc in config. Perhaps a Kconfig fix is needed, dunno.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Two identical entries for "rtc" in /proc/devices
2007-09-15 7:44 ` Andrew Morton
@ 2007-09-15 18:50 ` David Brownell
2007-09-16 5:10 ` Andrew Morton
0 siblings, 1 reply; 5+ messages in thread
From: David Brownell @ 2007-09-15 18:50 UTC (permalink / raw)
To: cebbert, akpm; +Cc: linux-kernel
> On Thu, 06 Sep 2007 18:23:22 -0400 Chuck Ebbert <cebbert@redhat.com> wrote:
>
> > # ls -li
> > total 0
> > 4026532007 -r--r--r-- 1 root root 0 Sep 6 18:18 nvram
> > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > 4026532056 -rw-r--r-- 1 root root 0 Sep 6 18:18 snd-page-alloc
>
> Next -mm has
>
> procfs-detect-duplicate-names.patch
> procfs-detect-duplicate-names-fix.patch
> procfs-detect-duplicate-names-fix-fix-2.patch
>
> which will at least tell us who the second offender is.
Semes pretty clear that this must be procfs itself...
when a filesystem sees a name in a directory, it should
refuse to make another file with the same name. And it
should *never* reuse inode numbers...
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Two identical entries for "rtc" in /proc/devices
2007-09-15 18:50 ` David Brownell
@ 2007-09-16 5:10 ` Andrew Morton
2007-09-19 5:21 ` David Brownell
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2007-09-16 5:10 UTC (permalink / raw)
To: David Brownell; +Cc: cebbert, linux-kernel
On Sat, 15 Sep 2007 11:50:21 -0700 David Brownell <david-b@pacbell.net> wrote:
> > On Thu, 06 Sep 2007 18:23:22 -0400 Chuck Ebbert <cebbert@redhat.com> wrote:
> >
> > > # ls -li
> > > total 0
> > > 4026532007 -r--r--r-- 1 root root 0 Sep 6 18:18 nvram
> > > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > > 4026532056 -rw-r--r-- 1 root root 0 Sep 6 18:18 snd-page-alloc
> >
> > Next -mm has
> >
> > procfs-detect-duplicate-names.patch
> > procfs-detect-duplicate-names-fix.patch
> > procfs-detect-duplicate-names-fix-fix-2.patch
> >
> > which will at least tell us who the second offender is.
>
> Semes pretty clear that this must be procfs itself...
> when a filesystem sees a name in a directory, it should
> refuse to make another file with the same name. And it
> should *never* reuse inode numbers...
>
procfs can reject the attempt to create the file, but the bottom line
is that two different callsites are trying to create the same file. One
of those callsites needs fixing?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Two identical entries for "rtc" in /proc/devices
2007-09-16 5:10 ` Andrew Morton
@ 2007-09-19 5:21 ` David Brownell
0 siblings, 0 replies; 5+ messages in thread
From: David Brownell @ 2007-09-19 5:21 UTC (permalink / raw)
To: Andrew Morton; +Cc: cebbert, linux-kernel
On Saturday 15 September 2007, Andrew Morton wrote:
> On Sat, 15 Sep 2007 11:50:21 -0700 David Brownell <david-b@pacbell.net> wrote:
>
> > > On Thu, 06 Sep 2007 18:23:22 -0400 Chuck Ebbert <cebbert@redhat.com> wrote:
> > >
> > > > # ls -li
> > > > total 0
> > > > 4026532007 -r--r--r-- 1 root root 0 Sep 6 18:18 nvram
> > > > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > > > 4026532067 -r--r--r-- 1 root root 0 Sep 6 18:18 rtc
> > > > 4026532056 -rw-r--r-- 1 root root 0 Sep 6 18:18 snd-page-alloc
> > >
> > > ...
> >
> > Semes pretty clear that this must be procfs itself...
> > when a filesystem sees a name in a directory, it should
> > refuse to make another file with the same name. And it
> > should *never* reuse inode numbers...
>
> ...
>
> procfs can reject the attempt to create the file, but the bottom line
> is that two different callsites are trying to create the same file. One
> of those callsites needs fixing?
Both of those call sites have code to handle procfs rejecting
the file creation; nothing to fix. And anyway, there's no way
this is a *caller* bug!
The missing step seems to be that proc_register() doesn't bother
to check whether there's already an entry for that file. Which
is what the appended *UNTESTED* patch does (it compiles though).
- Dave
--- g26.orig/fs/proc/generic.c 2007-09-18 22:08:44.000000000 -0700
+++ g26/fs/proc/generic.c 2007-09-18 22:14:07.000000000 -0700
@@ -521,10 +521,11 @@ static const struct inode_operations pro
.setattr = proc_notify_change,
};
-static int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp)
+static int proc_register(struct proc_dir_entry *dir, struct proc_dir_entry *dp)
{
unsigned int i;
-
+ struct proc_dir_entry *de;
+
i = get_inode_number();
if (i == 0)
return -EAGAIN;
@@ -547,6 +548,16 @@ static int proc_register(struct proc_dir
}
spin_lock(&proc_subdir_lock);
+
+ for (de = dir->subdir; de ; de = de->next) {
+ if (de->namelen != dp->namelen)
+ continue;
+ if (!memcmp(de->name, dp->name, de->namelen)) {
+ spin_unlock(&proc_subdir_lock);
+ return -EEXIST;
+ }
+ }
+
dp->next = dir->subdir;
dp->parent = dir;
dir->subdir = dp;
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-09-19 5:56 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-06 22:23 Two identical entries for "rtc" in /proc/devices Chuck Ebbert
2007-09-15 7:44 ` Andrew Morton
2007-09-15 18:50 ` David Brownell
2007-09-16 5:10 ` Andrew Morton
2007-09-19 5:21 ` David Brownell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox