core.c (ee6d3dd4ed48ab24b74bab3c3977b8218518247d) core.c (cf6299b6101903c31bddb0065804b2121ed510c7)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * drivers/base/core.c - core driver model code (device registration, etc)
4 *
5 * Copyright (c) 2002-3 Patrick Mochel
6 * Copyright (c) 2002-3 Open Source Development Labs
7 * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
8 * Copyright (c) 2006 Novell, Inc.

--- 2247 unchanged lines hidden (view full) ---

2256static struct kobj_type device_ktype = {
2257 .release = device_release,
2258 .sysfs_ops = &dev_sysfs_ops,
2259 .namespace = device_namespace,
2260 .get_ownership = device_get_ownership,
2261};
2262
2263
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * drivers/base/core.c - core driver model code (device registration, etc)
4 *
5 * Copyright (c) 2002-3 Patrick Mochel
6 * Copyright (c) 2002-3 Open Source Development Labs
7 * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
8 * Copyright (c) 2006 Novell, Inc.

--- 2247 unchanged lines hidden (view full) ---

2256static struct kobj_type device_ktype = {
2257 .release = device_release,
2258 .sysfs_ops = &dev_sysfs_ops,
2259 .namespace = device_namespace,
2260 .get_ownership = device_get_ownership,
2261};
2262
2263
2264static int dev_uevent_filter(struct kset *kset, struct kobject *kobj)
2264static int dev_uevent_filter(struct kobject *kobj)
2265{
2266 const struct kobj_type *ktype = get_ktype(kobj);
2267
2268 if (ktype == &device_ktype) {
2269 struct device *dev = kobj_to_dev(kobj);
2270 if (dev->bus)
2271 return 1;
2272 if (dev->class)
2273 return 1;
2274 }
2275 return 0;
2276}
2277
2265{
2266 const struct kobj_type *ktype = get_ktype(kobj);
2267
2268 if (ktype == &device_ktype) {
2269 struct device *dev = kobj_to_dev(kobj);
2270 if (dev->bus)
2271 return 1;
2272 if (dev->class)
2273 return 1;
2274 }
2275 return 0;
2276}
2277
2278static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj)
2278static const char *dev_uevent_name(struct kobject *kobj)
2279{
2280 struct device *dev = kobj_to_dev(kobj);
2281
2282 if (dev->bus)
2283 return dev->bus->name;
2284 if (dev->class)
2285 return dev->class->name;
2286 return NULL;
2287}
2288
2279{
2280 struct device *dev = kobj_to_dev(kobj);
2281
2282 if (dev->bus)
2283 return dev->bus->name;
2284 if (dev->class)
2285 return dev->class->name;
2286 return NULL;
2287}
2288
2289static int dev_uevent(struct kset *kset, struct kobject *kobj,
2290 struct kobj_uevent_env *env)
2289static int dev_uevent(struct kobject *kobj, struct kobj_uevent_env *env)
2291{
2292 struct device *dev = kobj_to_dev(kobj);
2293 int retval = 0;
2294
2295 /* add device node properties if present */
2296 if (MAJOR(dev->devt)) {
2297 const char *tmp;
2298 const char *name;

--- 78 unchanged lines hidden (view full) ---

2377 goto out;
2378
2379 kset = top_kobj->kset;
2380 if (!kset->uevent_ops || !kset->uevent_ops->uevent)
2381 goto out;
2382
2383 /* respect filter */
2384 if (kset->uevent_ops && kset->uevent_ops->filter)
2290{
2291 struct device *dev = kobj_to_dev(kobj);
2292 int retval = 0;
2293
2294 /* add device node properties if present */
2295 if (MAJOR(dev->devt)) {
2296 const char *tmp;
2297 const char *name;

--- 78 unchanged lines hidden (view full) ---

2376 goto out;
2377
2378 kset = top_kobj->kset;
2379 if (!kset->uevent_ops || !kset->uevent_ops->uevent)
2380 goto out;
2381
2382 /* respect filter */
2383 if (kset->uevent_ops && kset->uevent_ops->filter)
2385 if (!kset->uevent_ops->filter(kset, &dev->kobj))
2384 if (!kset->uevent_ops->filter(&dev->kobj))
2386 goto out;
2387
2388 env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
2389 if (!env)
2390 return -ENOMEM;
2391
2392 /* let the kset specific function add its keys */
2385 goto out;
2386
2387 env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
2388 if (!env)
2389 return -ENOMEM;
2390
2391 /* let the kset specific function add its keys */
2393 retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
2392 retval = kset->uevent_ops->uevent(&dev->kobj, env);
2394 if (retval)
2395 goto out;
2396
2397 /* copy keys to file */
2398 for (i = 0; i < env->envp_idx; i++)
2399 len += sysfs_emit_at(buf, len, "%s\n", env->envp[i]);
2400out:
2401 kfree(env);

--- 2450 unchanged lines hidden ---
2393 if (retval)
2394 goto out;
2395
2396 /* copy keys to file */
2397 for (i = 0; i < env->envp_idx; i++)
2398 len += sysfs_emit_at(buf, len, "%s\n", env->envp[i]);
2399out:
2400 kfree(env);

--- 2450 unchanged lines hidden ---