Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6:
  modules: do not try to add sysfs attributes if !CONFIG_SYSFS
  POWERPC: fix typo in pseries/power.c
  PM: Remove unbalanced mutex_unlock() from dpm_resume()
  UIO: fix Greg's stupid changes
  stable_kernel_rules: fix must already be in mainline
  ide: mark "ide=reverse" option as obsolete
  Driver core: Fix error handling in bus_add_driver().
  driver-core: fix kernel-doc function parameters
  cpufreq: fix kobject reference count handling
  slabinfo: fall back from /sys/kernel/slab to /sys/slab
  Fix broken utf-8 encodings in ja_JP translation of stable_kernel_rules.txt
This commit is contained in:
Linus Torvalds 2008-02-21 16:21:52 -08:00
commit e6364cd3a1
10 changed files with 109 additions and 93 deletions

View File

@ -11,69 +11,69 @@ comment or update of this file, please try to update Original(English)
file at first. file at first.
================================== ==================================
これは、 これは、
linux-2.6.24/Documentation/stable_kernel_rules.txt linux-2.6.24/Documentation/stable_kernel_rules.txt
の和訳です。 の和訳です。
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ > 翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
翻訳日: 2007/12/30 翻訳日: 2007/12/30
翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com> 翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
校正者: 武井伸光さん、<takei at webmasters dot gr dot jp> 校正者: 武井伸光さん、<takei at webmasters dot gr dot jp>
かねこさん (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp> かねこさん (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp>
小林 雅典さん (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp> 小林 雅典さん (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
野口さん (Kenji Noguchi) <tokyo246 at gmail dot com> 野口さん (Kenji Noguchi) <tokyo246 at gmail dot com>
神宮信太郎さん <jin at libjingu dot jp> 神宮信太郎さん <jin at libjingu dot jp>
================================== ==================================
ずっと知りたかった Linux 2.6 -stable リリースの全て ずっと知りたかった Linux 2.6 -stable リリースの全て
"-stable" ツリーにどのような種類のパッチが受け入れられるか、どのような "-stable" ツリーにどのような種類のパッチが受け入れられるか、どのような
ものが受け入れられないか、についての規則- ものが受け入れられないか、についての規則-
- 明らかに正しく、テストされているものでなければならない。 - 明らかに正しく、テストされているものでなければならない。
- 文脈(変更行の前後)を含めて 100 行より大きくてはいけない。 - 文脈(変更行の前後)を含めて 100 行より大きくてはいけない。
- ただ一個のことだけを修正しているべき。 - ただ一個のことだけを修正しているべき。
- 皆を悩ませている本物のバグを修正しなければならない。("これはバグで - 皆を悩ませている本物のバグを修正しなければならない。("これはバグで
あるかもしれないが..." のようなものではない) あるかもしれないが..." のようなものではない)
- ビルドエラー(CONFIG_BROKENになっているものを除く), oops, ハング、デー - ビルドエラー(CONFIG_BROKENになっているものを除く), oops, ハング、デー
タ破壊、現実のセキュリティ問題、その他 "ああ、これはダメだね"という タ破壊、現実のセキュリティ問題、その他 "ああ、これはダメだね"という
ようなものを修正しなければならない。短く言えば、重大な問題。 ようなものを修正しなければならない。短く言えば、重大な問題。
- どのように競合状態が発生するかの説明も一緒に書かれていない限り、 - どのように競合状態が発生するかの説明も一緒に書かれていない限り、
"理論的には競合状態になる"ようなものは不可。 "理論的には競合状態になる"ようなものは不可。
- いかなる些細な修正も含めることはできない。(スペルの修正、空白のクリー - いかなる些細な修正も含めることはできない。(スペルの修正、空白のクリー
ンアップなど) ンアップなど)
- 対応するサブシステムメンテナが受け入れたものでなければならない。 - 対応するサブシステムメンテナが受け入れたものでなければならない。
- Documentation/SubmittingPatches の規則に従ったものでなければならない。 - Documentation/SubmittingPatches の規則に従ったものでなければならない。
-stable ツリーにパッチを送付する手続き- -stable ツリーにパッチを送付する手続き-
- 上記の規則に従っているかを確認した後に、stable@kernel.org にパッチ - 上記の規則に従っているかを確認した後に、stable@kernel.org にパッチ
を送る。 を送る。
- 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合 - 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合
には NAK を受け取る。この反応は開発者たちのスケジュールによって、数 には NAK を受け取る。この反応は開発者たちのスケジュールによって、数
日かかる場合がある。 日かかる場合がある。
- もし受け取られたら、パッチは他の開発者たちのレビューのために - もし受け取られたら、パッチは他の開発者たちのレビューのために
-stable キューに追加される。 -stable キューに追加される。
- セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ - セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ
きではなく、代わりに security@kernel.org のアドレスに送られる。 きではなく、代わりに security@kernel.org のアドレスに送られる。
レビューサイクル- レビューサイクル-
- -stable メンテナがレビューサイクルを決めるとき、パッチはレビュー委 - -stable メンテナがレビューサイクルを決めるとき、パッチはレビュー委
員会とパッチが影響する領域のメンテナ(提供者がその領域のメンテナで無 員会とパッチが影響する領域のメンテナ(提供者がその領域のメンテナで無
い限り)に送られ、linux-kernel メーリングリストにCCされる。 い限り)に送られ、linux-kernel メーリングリストにCCされる。
- レビュー委員会は 48時間の間に ACK か NAK を出す。 - レビュー委員会は 48時間の間に ACK か NAK を出す。
- もしパッチが委員会のメンバから却下れるか、メンテナ達やメンバが気付 - もしパッチが委員会のメンバから却下されるか、メンテナ達やメンバが気付
かなかった問題が持ちあがり、linux-kernel メンバがパッチに異議を唱え かなかった問題が持ちあがり、linux-kernel メンバがパッチに異議を唱え
た場合には、パッチはキューから削除される。 た場合には、パッチはキューから削除される。
- レビューサイクルの最後に、ACK を受けたパッチは最新の -stable リリー - レビューサイクルの最後に、ACK を受けたパッチは最新の -stable リリー
スに追加され、その後に新しい -stable リリースが行われる。 スに追加され、その後に新しい -stable リリースが行われる。
- セキュリティパッチは、通常のレビューサイクルを通らず、セキュリティ - セキュリティパッチは、通常のレビューサイクルを通らず、セキュリティ
カーネルチームから直接 -stable ツリーに受け付けられる。 カーネルチームから直接 -stable ツリーに受け付けられる。
この手続きの詳細については kernel security チームに問い合わせること。 この手続きの詳細については kernel security チームに問い合わせること。
レビュー委員会- レビュー委員会-
- この委員会は、このタスクについて活動する多くのボランティアと、少数の - この委員会は、このタスクについて活動する多くのボランティアと、少数の
非ボランティアのカーネル開発者達で構成されている。 非ボランティアのカーネル開発者達で構成されている。

View File

@ -16,8 +16,9 @@ Rules on what kind of patches are accepted, and which ones are not, into the
race can be exploited is also provided. race can be exploited is also provided.
- It cannot contain any "trivial" fixes in it (spelling changes, - It cannot contain any "trivial" fixes in it (spelling changes,
whitespace cleanups, etc). whitespace cleanups, etc).
- It must be accepted by the relevant subsystem maintainer.
- It must follow the Documentation/SubmittingPatches rules. - It must follow the Documentation/SubmittingPatches rules.
- It or an equivalent fix must already exist in Linus' tree. Quote the
respective commit ID in Linus' tree in your patch submission to -stable.
Procedure for submitting patches to the -stable tree: Procedure for submitting patches to the -stable tree:
@ -28,7 +29,9 @@ Procedure for submitting patches to the -stable tree:
queue, or a NAK if the patch is rejected. This response might take a few queue, or a NAK if the patch is rejected. This response might take a few
days, according to the developer's schedules. days, according to the developer's schedules.
- If accepted, the patch will be added to the -stable queue, for review by - If accepted, the patch will be added to the -stable queue, for review by
other developers. other developers and by the relevant subsystem maintainer.
- If the stable@kernel.org address is added to a patch, when it goes into
Linus's tree it will automatically be emailed to the stable team.
- Security patches should not be sent to this alias, but instead to the - Security patches should not be sent to this alias, but instead to the
documented security@kernel.org address. documented security@kernel.org address.

View File

@ -1123,7 +1123,7 @@ void read_slab_dir(void)
char *t; char *t;
int count; int count;
if (chdir("/sys/kernel/slab")) if (chdir("/sys/kernel/slab") && chdir("/sys/slab"))
fatal("SYSFS support for SLUB not active\n"); fatal("SYSFS support for SLUB not active\n");
dir = opendir("."); dir = opendir(".");

View File

@ -658,9 +658,10 @@ int bus_add_driver(struct device_driver *drv)
pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name); pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name);
priv = kzalloc(sizeof(*priv), GFP_KERNEL); priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv) if (!priv) {
return -ENOMEM; error = -ENOMEM;
goto out_put_bus;
}
klist_init(&priv->klist_devices, NULL, NULL); klist_init(&priv->klist_devices, NULL, NULL);
priv->driver = drv; priv->driver = drv;
drv->p = priv; drv->p = priv;
@ -668,7 +669,7 @@ int bus_add_driver(struct device_driver *drv)
error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL, error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL,
"%s", drv->name); "%s", drv->name);
if (error) if (error)
goto out_put_bus; goto out_unregister;
if (drv->bus->p->drivers_autoprobe) { if (drv->bus->p->drivers_autoprobe) {
error = driver_attach(drv); error = driver_attach(drv);

View File

@ -120,6 +120,9 @@ EXPORT_SYMBOL_GPL(driver_remove_file);
/** /**
* driver_add_kobj - add a kobject below the specified driver * driver_add_kobj - add a kobject below the specified driver
* @drv: requesting device driver
* @kobj: kobject to add below this driver
* @fmt: format string that names the kobject
* *
* You really don't want to do this, this is only here due to one looney * You really don't want to do this, this is only here due to one looney
* iseries driver, go poke those developers if you are annoyed about * iseries driver, go poke those developers if you are annoyed about

View File

@ -479,7 +479,6 @@ static int dpm_suspend(pm_message_t state)
mutex_lock(&dpm_list_mtx); mutex_lock(&dpm_list_mtx);
if (list_empty(&dev->power.entry)) if (list_empty(&dev->power.entry))
list_add(&dev->power.entry, &dpm_locked); list_add(&dev->power.entry, &dpm_locked);
mutex_unlock(&dpm_list_mtx);
break; break;
} }
mutex_lock(&dpm_list_mtx); mutex_lock(&dpm_list_mtx);
@ -523,6 +522,7 @@ static void lock_all_devices(void)
/** /**
* device_suspend - Save state and stop all devices in system. * device_suspend - Save state and stop all devices in system.
* @state: new power management state
* *
* Prevent new devices from being registered, then lock all devices * Prevent new devices from being registered, then lock all devices
* and suspend them. * and suspend them.

View File

@ -1006,14 +1006,6 @@ static int __cpufreq_remove_dev (struct sys_device * sys_dev)
} }
#endif #endif
if (!kobject_get(&data->kobj)) {
spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
cpufreq_debug_enable_ratelimit();
unlock_policy_rwsem_write(cpu);
return -EFAULT;
}
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU

View File

@ -1229,7 +1229,7 @@ static int __init ide_setup(char *s)
if (!strcmp(s, "ide=reverse")) { if (!strcmp(s, "ide=reverse")) {
ide_scan_direction = 1; ide_scan_direction = 1;
printk(" : Enabled support for IDE inverse scan order.\n"); printk(" : Enabled support for IDE inverse scan order.\n");
return 1; goto obsolete_option;
} }
#endif #endif

View File

@ -57,29 +57,29 @@ struct uio_map {
}; };
#define to_map(map) container_of(map, struct uio_map, kobj) #define to_map(map) container_of(map, struct uio_map, kobj)
static ssize_t map_addr_show(struct uio_mem *mem, char *buf)
static ssize_t map_attr_show(struct kobject *kobj, struct kobj_attribute *attr,
char *buf)
{ {
struct uio_map *map = to_map(kobj); return sprintf(buf, "0x%lx\n", mem->addr);
struct uio_mem *mem = map->mem;
if (strncmp(attr->attr.name, "addr", 4) == 0)
return sprintf(buf, "0x%lx\n", mem->addr);
if (strncmp(attr->attr.name, "size", 4) == 0)
return sprintf(buf, "0x%lx\n", mem->size);
return -ENODEV;
} }
static struct kobj_attribute attr_attribute = static ssize_t map_size_show(struct uio_mem *mem, char *buf)
__ATTR(addr, S_IRUGO, map_attr_show, NULL); {
static struct kobj_attribute size_attribute = return sprintf(buf, "0x%lx\n", mem->size);
__ATTR(size, S_IRUGO, map_attr_show, NULL); }
struct uio_sysfs_entry {
struct attribute attr;
ssize_t (*show)(struct uio_mem *, char *);
ssize_t (*store)(struct uio_mem *, const char *, size_t);
};
static struct uio_sysfs_entry addr_attribute =
__ATTR(addr, S_IRUGO, map_addr_show, NULL);
static struct uio_sysfs_entry size_attribute =
__ATTR(size, S_IRUGO, map_size_show, NULL);
static struct attribute *attrs[] = { static struct attribute *attrs[] = {
&attr_attribute.attr, &addr_attribute.attr,
&size_attribute.attr, &size_attribute.attr,
NULL, /* need to NULL terminate the list of attributes */ NULL, /* need to NULL terminate the list of attributes */
}; };
@ -90,8 +90,28 @@ static void map_release(struct kobject *kobj)
kfree(map); kfree(map);
} }
static ssize_t map_type_show(struct kobject *kobj, struct attribute *attr,
char *buf)
{
struct uio_map *map = to_map(kobj);
struct uio_mem *mem = map->mem;
struct uio_sysfs_entry *entry;
entry = container_of(attr, struct uio_sysfs_entry, attr);
if (!entry->show)
return -EIO;
return entry->show(mem, buf);
}
static struct sysfs_ops uio_sysfs_ops = {
.show = map_type_show,
};
static struct kobj_type map_attr_type = { static struct kobj_type map_attr_type = {
.release = map_release, .release = map_release,
.sysfs_ops = &uio_sysfs_ops,
.default_attrs = attrs, .default_attrs = attrs,
}; };

View File

@ -987,12 +987,11 @@ static unsigned long resolve_symbol(Elf_Shdr *sechdrs,
return ret; return ret;
} }
/* /*
* /sys/module/foo/sections stuff * /sys/module/foo/sections stuff
* J. Corbet <corbet@lwn.net> * J. Corbet <corbet@lwn.net>
*/ */
#ifdef CONFIG_KALLSYMS #if defined(CONFIG_KALLSYMS) && defined(CONFIG_SYSFS)
static ssize_t module_sect_show(struct module_attribute *mattr, static ssize_t module_sect_show(struct module_attribute *mattr,
struct module *mod, char *buf) struct module *mod, char *buf)
{ {
@ -1188,7 +1187,7 @@ static inline void add_notes_attrs(struct module *mod, unsigned int nsect,
static inline void remove_notes_attrs(struct module *mod) static inline void remove_notes_attrs(struct module *mod)
{ {
} }
#endif /* CONFIG_KALLSYMS */ #endif
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
int module_add_modinfo_attrs(struct module *mod) int module_add_modinfo_attrs(struct module *mod)
@ -1231,9 +1230,7 @@ void module_remove_modinfo_attrs(struct module *mod)
} }
kfree(mod->modinfo_attrs); kfree(mod->modinfo_attrs);
} }
#endif
#ifdef CONFIG_SYSFS
int mod_sysfs_init(struct module *mod) int mod_sysfs_init(struct module *mod)
{ {
int err; int err;