提交 39aba963 编写于 作者: K Kay Sievers 提交者: Greg Kroah-Hartman

driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices

This patch removes the old CONFIG_SYSFS_DEPRECATED_V2 config option,
but it keeps the logic around to handle block devices in the old manner
as some people like to run new kernel versions on old (pre 2007/2008)
distros.
Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Stephen Hemminger <shemminger@vyatta.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: "James E.J. Bottomley" <James.Bottomley@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Cc: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 807508c8
...@@ -440,22 +440,6 @@ static void device_remove_attrs(struct bus_type *bus, struct device *dev) ...@@ -440,22 +440,6 @@ static void device_remove_attrs(struct bus_type *bus, struct device *dev)
} }
} }
#ifdef CONFIG_SYSFS_DEPRECATED
static int make_deprecated_bus_links(struct device *dev)
{
return sysfs_create_link(&dev->kobj,
&dev->bus->p->subsys.kobj, "bus");
}
static void remove_deprecated_bus_links(struct device *dev)
{
sysfs_remove_link(&dev->kobj, "bus");
}
#else
static inline int make_deprecated_bus_links(struct device *dev) { return 0; }
static inline void remove_deprecated_bus_links(struct device *dev) { }
#endif
/** /**
* bus_add_device - add device to bus * bus_add_device - add device to bus
* @dev: device being added * @dev: device being added
...@@ -482,15 +466,10 @@ int bus_add_device(struct device *dev) ...@@ -482,15 +466,10 @@ int bus_add_device(struct device *dev)
&dev->bus->p->subsys.kobj, "subsystem"); &dev->bus->p->subsys.kobj, "subsystem");
if (error) if (error)
goto out_subsys; goto out_subsys;
error = make_deprecated_bus_links(dev);
if (error)
goto out_deprecated;
klist_add_tail(&dev->p->knode_bus, &bus->p->klist_devices); klist_add_tail(&dev->p->knode_bus, &bus->p->klist_devices);
} }
return 0; return 0;
out_deprecated:
sysfs_remove_link(&dev->kobj, "subsystem");
out_subsys: out_subsys:
sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev)); sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev));
out_id: out_id:
...@@ -530,7 +509,6 @@ void bus_remove_device(struct device *dev) ...@@ -530,7 +509,6 @@ void bus_remove_device(struct device *dev)
{ {
if (dev->bus) { if (dev->bus) {
sysfs_remove_link(&dev->kobj, "subsystem"); sysfs_remove_link(&dev->kobj, "subsystem");
remove_deprecated_bus_links(dev);
sysfs_remove_link(&dev->bus->p->devices_kset->kobj, sysfs_remove_link(&dev->bus->p->devices_kset->kobj,
dev_name(dev)); dev_name(dev));
device_remove_attrs(dev->bus, dev); device_remove_attrs(dev->bus, dev);
......
...@@ -276,25 +276,6 @@ void class_destroy(struct class *cls) ...@@ -276,25 +276,6 @@ void class_destroy(struct class *cls)
class_unregister(cls); class_unregister(cls);
} }
#ifdef CONFIG_SYSFS_DEPRECATED
char *make_class_name(const char *name, struct kobject *kobj)
{
char *class_name;
int size;
size = strlen(name) + strlen(kobject_name(kobj)) + 2;
class_name = kmalloc(size, GFP_KERNEL);
if (!class_name)
return NULL;
strcpy(class_name, name);
strcat(class_name, ":");
strcat(class_name, kobject_name(kobj));
return class_name;
}
#endif
/** /**
* class_dev_iter_init - initialize class device iterator * class_dev_iter_init - initialize class device iterator
* @iter: class iterator to initialize * @iter: class iterator to initialize
......
...@@ -203,37 +203,6 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj, ...@@ -203,37 +203,6 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
if (dev->driver) if (dev->driver)
add_uevent_var(env, "DRIVER=%s", dev->driver->name); add_uevent_var(env, "DRIVER=%s", dev->driver->name);
#ifdef CONFIG_SYSFS_DEPRECATED
if (dev->class) {
struct device *parent = dev->parent;
/* find first bus device in parent chain */
while (parent && !parent->bus)
parent = parent->parent;
if (parent && parent->bus) {
const char *path;
path = kobject_get_path(&parent->kobj, GFP_KERNEL);
if (path) {
add_uevent_var(env, "PHYSDEVPATH=%s", path);
kfree(path);
}
add_uevent_var(env, "PHYSDEVBUS=%s", parent->bus->name);
if (parent->driver)
add_uevent_var(env, "PHYSDEVDRIVER=%s",
parent->driver->name);
}
} else if (dev->bus) {
add_uevent_var(env, "PHYSDEVBUS=%s", dev->bus->name);
if (dev->driver)
add_uevent_var(env, "PHYSDEVDRIVER=%s",
dev->driver->name);
}
#endif
/* have the bus specific function add its stuff */ /* have the bus specific function add its stuff */
if (dev->bus && dev->bus->uevent) { if (dev->bus && dev->bus->uevent) {
retval = dev->bus->uevent(dev, env); retval = dev->bus->uevent(dev, env);
...@@ -578,24 +547,6 @@ void device_initialize(struct device *dev) ...@@ -578,24 +547,6 @@ void device_initialize(struct device *dev)
set_dev_node(dev, -1); set_dev_node(dev, -1);
} }
#ifdef CONFIG_SYSFS_DEPRECATED
static struct kobject *get_device_parent(struct device *dev,
struct device *parent)
{
/* class devices without a parent live in /sys/class/<classname>/ */
if (dev->class && (!parent || parent->class != dev->class))
return &dev->class->p->class_subsys.kobj;
/* all other devices keep their parent */
else if (parent)
return &parent->kobj;
return NULL;
}
static inline void cleanup_device_parent(struct device *dev) {}
static inline void cleanup_glue_dir(struct device *dev,
struct kobject *glue_dir) {}
#else
static struct kobject *virtual_device_parent(struct device *dev) static struct kobject *virtual_device_parent(struct device *dev)
{ {
static struct kobject *virtual_dir = NULL; static struct kobject *virtual_dir = NULL;
...@@ -666,6 +617,14 @@ static struct kobject *get_device_parent(struct device *dev, ...@@ -666,6 +617,14 @@ static struct kobject *get_device_parent(struct device *dev,
struct kobject *parent_kobj; struct kobject *parent_kobj;
struct kobject *k; struct kobject *k;
#ifdef CONFIG_SYSFS_DEPRECATED
/* block disks show up in /sys/block */
if (dev->class == &block_class) {
if (parent && parent->class == &block_class)
return &parent->kobj;
return &block_class.p->class_subsys.kobj;
}
#endif
/* /*
* If we have no parent, we live in "virtual". * If we have no parent, we live in "virtual".
* Class-devices with a non class-device as parent, live * Class-devices with a non class-device as parent, live
...@@ -719,7 +678,6 @@ static void cleanup_device_parent(struct device *dev) ...@@ -719,7 +678,6 @@ static void cleanup_device_parent(struct device *dev)
{ {
cleanup_glue_dir(dev, dev->kobj.parent); cleanup_glue_dir(dev, dev->kobj.parent);
} }
#endif
static void setup_parent(struct device *dev, struct device *parent) static void setup_parent(struct device *dev, struct device *parent)
{ {
...@@ -742,70 +700,29 @@ static int device_add_class_symlinks(struct device *dev) ...@@ -742,70 +700,29 @@ static int device_add_class_symlinks(struct device *dev)
if (error) if (error)
goto out; goto out;
#ifdef CONFIG_SYSFS_DEPRECATED
/* stacked class devices need a symlink in the class directory */
if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
device_is_not_partition(dev)) {
error = sysfs_create_link(&dev->class->p->class_subsys.kobj,
&dev->kobj, dev_name(dev));
if (error)
goto out_subsys;
}
if (dev->parent && device_is_not_partition(dev)) { if (dev->parent && device_is_not_partition(dev)) {
struct device *parent = dev->parent; error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
char *class_name;
/*
* stacked class devices have the 'device' link
* pointing to the bus device instead of the parent
*/
while (parent->class && !parent->bus && parent->parent)
parent = parent->parent;
error = sysfs_create_link(&dev->kobj,
&parent->kobj,
"device"); "device");
if (error) if (error)
goto out_busid; goto out_subsys;
class_name = make_class_name(dev->class->name,
&dev->kobj);
if (class_name)
error = sysfs_create_link(&dev->parent->kobj,
&dev->kobj, class_name);
kfree(class_name);
if (error)
goto out_device;
} }
#ifdef CONFIG_SYSFS_DEPRECATED
/* /sys/block has directories and does not need symlinks */
if (dev->class == &block_class)
return 0; return 0;
#endif
out_device:
if (dev->parent && device_is_not_partition(dev))
sysfs_remove_link(&dev->kobj, "device");
out_busid:
if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
device_is_not_partition(dev))
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj,
dev_name(dev));
#else
/* link in the class directory pointing to the device */ /* link in the class directory pointing to the device */
error = sysfs_create_link(&dev->class->p->class_subsys.kobj, error = sysfs_create_link(&dev->class->p->class_subsys.kobj,
&dev->kobj, dev_name(dev)); &dev->kobj, dev_name(dev));
if (error) if (error)
goto out_subsys; goto out_device;
if (dev->parent && device_is_not_partition(dev)) {
error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
"device");
if (error)
goto out_busid;
}
return 0; return 0;
out_busid: out_device:
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj, dev_name(dev)); sysfs_remove_link(&dev->kobj, "device");
#endif
out_subsys: out_subsys:
sysfs_remove_link(&dev->kobj, "subsystem"); sysfs_remove_link(&dev->kobj, "subsystem");
...@@ -818,30 +735,14 @@ static void device_remove_class_symlinks(struct device *dev) ...@@ -818,30 +735,14 @@ static void device_remove_class_symlinks(struct device *dev)
if (!dev->class) if (!dev->class)
return; return;
#ifdef CONFIG_SYSFS_DEPRECATED
if (dev->parent && device_is_not_partition(dev)) {
char *class_name;
class_name = make_class_name(dev->class->name, &dev->kobj);
if (class_name) {
sysfs_remove_link(&dev->parent->kobj, class_name);
kfree(class_name);
}
sysfs_remove_link(&dev->kobj, "device");
}
if (dev->kobj.parent != &dev->class->p->class_subsys.kobj &&
device_is_not_partition(dev))
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj,
dev_name(dev));
#else
if (dev->parent && device_is_not_partition(dev)) if (dev->parent && device_is_not_partition(dev))
sysfs_remove_link(&dev->kobj, "device"); sysfs_remove_link(&dev->kobj, "device");
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj, dev_name(dev));
#endif
sysfs_remove_link(&dev->kobj, "subsystem"); sysfs_remove_link(&dev->kobj, "subsystem");
#ifdef CONFIG_SYSFS_DEPRECATED
if (dev->class == &block_class)
return;
#endif
sysfs_delete_link(&dev->class->p->class_subsys.kobj, &dev->kobj, dev_name(dev));
} }
/** /**
...@@ -1613,41 +1514,23 @@ int device_rename(struct device *dev, const char *new_name) ...@@ -1613,41 +1514,23 @@ int device_rename(struct device *dev, const char *new_name)
pr_debug("device: '%s': %s: renaming to '%s'\n", dev_name(dev), pr_debug("device: '%s': %s: renaming to '%s'\n", dev_name(dev),
__func__, new_name); __func__, new_name);
#ifdef CONFIG_SYSFS_DEPRECATED
if ((dev->class) && (dev->parent))
old_class_name = make_class_name(dev->class->name, &dev->kobj);
#endif
old_device_name = kstrdup(dev_name(dev), GFP_KERNEL); old_device_name = kstrdup(dev_name(dev), GFP_KERNEL);
if (!old_device_name) { if (!old_device_name) {
error = -ENOMEM; error = -ENOMEM;
goto out; goto out;
} }
#ifndef CONFIG_SYSFS_DEPRECATED
if (dev->class) { if (dev->class) {
error = sysfs_rename_link(&dev->class->p->class_subsys.kobj, error = sysfs_rename_link(&dev->class->p->class_subsys.kobj,
&dev->kobj, old_device_name, new_name); &dev->kobj, old_device_name, new_name);
if (error) if (error)
goto out; goto out;
} }
#endif
error = kobject_rename(&dev->kobj, new_name); error = kobject_rename(&dev->kobj, new_name);
if (error) if (error)
goto out; goto out;
#ifdef CONFIG_SYSFS_DEPRECATED
if (old_class_name) {
new_class_name = make_class_name(dev->class->name, &dev->kobj);
if (new_class_name) {
error = sysfs_rename_link(&dev->parent->kobj,
&dev->kobj,
old_class_name,
new_class_name);
}
}
#endif
out: out:
put_device(dev); put_device(dev);
...@@ -1664,40 +1547,13 @@ static int device_move_class_links(struct device *dev, ...@@ -1664,40 +1547,13 @@ static int device_move_class_links(struct device *dev,
struct device *new_parent) struct device *new_parent)
{ {
int error = 0; int error = 0;
#ifdef CONFIG_SYSFS_DEPRECATED
char *class_name;
class_name = make_class_name(dev->class->name, &dev->kobj);
if (!class_name) {
error = -ENOMEM;
goto out;
}
if (old_parent) {
sysfs_remove_link(&dev->kobj, "device");
sysfs_remove_link(&old_parent->kobj, class_name);
}
if (new_parent) {
error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
"device");
if (error)
goto out;
error = sysfs_create_link(&new_parent->kobj, &dev->kobj,
class_name);
if (error)
sysfs_remove_link(&dev->kobj, "device");
} else
error = 0;
out:
kfree(class_name);
return error;
#else
if (old_parent) if (old_parent)
sysfs_remove_link(&dev->kobj, "device"); sysfs_remove_link(&dev->kobj, "device");
if (new_parent) if (new_parent)
error = sysfs_create_link(&dev->kobj, &new_parent->kobj, error = sysfs_create_link(&dev->kobj, &new_parent->kobj,
"device"); "device");
return error; return error;
#endif
} }
/** /**
......
...@@ -411,9 +411,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize) ...@@ -411,9 +411,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
device_initialize(&shost->shost_gendev); device_initialize(&shost->shost_gendev);
dev_set_name(&shost->shost_gendev, "host%d", shost->host_no); dev_set_name(&shost->shost_gendev, "host%d", shost->host_no);
#ifndef CONFIG_SYSFS_DEPRECATED
shost->shost_gendev.bus = &scsi_bus_type; shost->shost_gendev.bus = &scsi_bus_type;
#endif
shost->shost_gendev.type = &scsi_host_type; shost->shost_gendev.type = &scsi_host_type;
device_initialize(&shost->shost_dev); device_initialize(&shost->shost_dev);
......
...@@ -417,9 +417,7 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, ...@@ -417,9 +417,7 @@ static struct scsi_target *scsi_alloc_target(struct device *parent,
starget->reap_ref = 1; starget->reap_ref = 1;
dev->parent = get_device(parent); dev->parent = get_device(parent);
dev_set_name(dev, "target%d:%d:%d", shost->host_no, channel, id); dev_set_name(dev, "target%d:%d:%d", shost->host_no, channel, id);
#ifndef CONFIG_SYSFS_DEPRECATED
dev->bus = &scsi_bus_type; dev->bus = &scsi_bus_type;
#endif
dev->type = &scsi_target_type; dev->type = &scsi_target_type;
starget->id = id; starget->id = id;
starget->channel = channel; starget->channel = channel;
......
...@@ -133,9 +133,7 @@ struct snd_card { ...@@ -133,9 +133,7 @@ struct snd_card {
int free_on_last_close; /* free in context of file_release */ int free_on_last_close; /* free in context of file_release */
wait_queue_head_t shutdown_sleep; wait_queue_head_t shutdown_sleep;
struct device *dev; /* device assigned to this card */ struct device *dev; /* device assigned to this card */
#ifndef CONFIG_SYSFS_DEPRECATED
struct device *card_dev; /* cardX object for sysfs */ struct device *card_dev; /* cardX object for sysfs */
#endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
unsigned int power_state; /* power state */ unsigned int power_state; /* power state */
...@@ -196,11 +194,7 @@ struct snd_minor { ...@@ -196,11 +194,7 @@ struct snd_minor {
/* return a device pointer linked to each sound device as a parent */ /* return a device pointer linked to each sound device as a parent */
static inline struct device *snd_card_get_device_link(struct snd_card *card) static inline struct device *snd_card_get_device_link(struct snd_card *card)
{ {
#ifdef CONFIG_SYSFS_DEPRECATED
return card ? card->dev : NULL;
#else
return card ? card->card_dev : NULL; return card ? card->card_dev : NULL;
#endif
} }
/* sound.c */ /* sound.c */
......
...@@ -656,40 +656,24 @@ config MM_OWNER ...@@ -656,40 +656,24 @@ config MM_OWNER
bool bool
config SYSFS_DEPRECATED config SYSFS_DEPRECATED
bool
config SYSFS_DEPRECATED_V2
bool "enable deprecated sysfs features to support old userspace tools" bool "enable deprecated sysfs features to support old userspace tools"
depends on SYSFS depends on SYSFS
default n default n
select SYSFS_DEPRECATED help
help This option switches the layout of the "block" class devices, to not
This option switches the layout of sysfs to the deprecated show up in /sys/class/block/, but only in /sys/block/.
version. Do not use it on recent distributions.
This option allows new kernels to run on old distributions and tools,
The current sysfs layout features a unified device tree at which might get confused by /sys/class/block/. Since 2007/2008 all
/sys/devices/, which is able to express a hierarchy between major distributions and tools handle this just fine.
class devices. If the deprecated option is set to Y, the
unified device tree is split into a bus device tree at Recent distributions and userspace tools after 2009/2010 depend on
/sys/devices/ and several individual class device trees at the existence of /sys/class/block/, and will not work with this
/sys/class/. The class and bus devices will be connected by option enabled.
"<subsystem>:<name>" and the "device" links. The "block"
class devices, will not show up in /sys/class/block/. Some Only if you are using a new kernel on an old distribution, you might
subsystems will suppress the creation of some devices which need to say Y here. Never say Y, if the original kernel, that came
depend on the unified device tree. with your distribution, has not set this option.
This option is not a pure compatibility option that can
be safely enabled on newer distributions. It will change the
layout of sysfs to the non-extensible deprecated version,
and disable some features, which can not be exported without
confusing older userspace tools. Since 2007/2008 all major
distributions do not enable this option, and ship no tools which
depend on the deprecated layout or this option.
If you are using a new kernel on an older distribution, or use
older userspace tools, you might need to say Y here. Do not say Y,
if the original kernel, that came with your distribution, has
this option set to N.
config RELAY config RELAY
bool "Kernel->user space relay support (formerly relayfs)" bool "Kernel->user space relay support (formerly relayfs)"
......
...@@ -395,12 +395,10 @@ int snd_card_disconnect(struct snd_card *card) ...@@ -395,12 +395,10 @@ int snd_card_disconnect(struct snd_card *card)
snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number); snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number);
snd_info_card_disconnect(card); snd_info_card_disconnect(card);
#ifndef CONFIG_SYSFS_DEPRECATED
if (card->card_dev) { if (card->card_dev) {
device_unregister(card->card_dev); device_unregister(card->card_dev);
card->card_dev = NULL; card->card_dev = NULL;
} }
#endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
wake_up(&card->power_sleep); wake_up(&card->power_sleep);
#endif #endif
...@@ -573,7 +571,6 @@ void snd_card_set_id(struct snd_card *card, const char *nid) ...@@ -573,7 +571,6 @@ void snd_card_set_id(struct snd_card *card, const char *nid)
} }
EXPORT_SYMBOL(snd_card_set_id); EXPORT_SYMBOL(snd_card_set_id);
#ifndef CONFIG_SYSFS_DEPRECATED
static ssize_t static ssize_t
card_id_show_attr(struct device *dev, card_id_show_attr(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
...@@ -630,7 +627,6 @@ card_number_show_attr(struct device *dev, ...@@ -630,7 +627,6 @@ card_number_show_attr(struct device *dev,
static struct device_attribute card_number_attrs = static struct device_attribute card_number_attrs =
__ATTR(number, S_IRUGO, card_number_show_attr, NULL); __ATTR(number, S_IRUGO, card_number_show_attr, NULL);
#endif /* CONFIG_SYSFS_DEPRECATED */
/** /**
* snd_card_register - register the soundcard * snd_card_register - register the soundcard
...@@ -649,7 +645,7 @@ int snd_card_register(struct snd_card *card) ...@@ -649,7 +645,7 @@ int snd_card_register(struct snd_card *card)
if (snd_BUG_ON(!card)) if (snd_BUG_ON(!card))
return -EINVAL; return -EINVAL;
#ifndef CONFIG_SYSFS_DEPRECATED
if (!card->card_dev) { if (!card->card_dev) {
card->card_dev = device_create(sound_class, card->dev, card->card_dev = device_create(sound_class, card->dev,
MKDEV(0, 0), card, MKDEV(0, 0), card,
...@@ -657,7 +653,7 @@ int snd_card_register(struct snd_card *card) ...@@ -657,7 +653,7 @@ int snd_card_register(struct snd_card *card)
if (IS_ERR(card->card_dev)) if (IS_ERR(card->card_dev))
card->card_dev = NULL; card->card_dev = NULL;
} }
#endif
if ((err = snd_device_register_all(card)) < 0) if ((err = snd_device_register_all(card)) < 0)
return err; return err;
mutex_lock(&snd_card_mutex); mutex_lock(&snd_card_mutex);
...@@ -674,7 +670,6 @@ int snd_card_register(struct snd_card *card) ...@@ -674,7 +670,6 @@ int snd_card_register(struct snd_card *card)
if (snd_mixer_oss_notify_callback) if (snd_mixer_oss_notify_callback)
snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_REGISTER); snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_REGISTER);
#endif #endif
#ifndef CONFIG_SYSFS_DEPRECATED
if (card->card_dev) { if (card->card_dev) {
err = device_create_file(card->card_dev, &card_id_attrs); err = device_create_file(card->card_dev, &card_id_attrs);
if (err < 0) if (err < 0)
...@@ -683,7 +678,7 @@ int snd_card_register(struct snd_card *card) ...@@ -683,7 +678,7 @@ int snd_card_register(struct snd_card *card)
if (err < 0) if (err < 0)
return err; return err;
} }
#endif
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册