Merge branches 'tracing/ftrace', 'tracing/textedit' and 'linus' into tracing/core
This commit is contained in:
@@ -234,7 +234,6 @@ struct cpufreq_driver {
|
||||
int (*suspend) (struct cpufreq_policy *policy, pm_message_t pmsg);
|
||||
int (*resume) (struct cpufreq_policy *policy);
|
||||
struct freq_attr **attr;
|
||||
bool hide_interface;
|
||||
};
|
||||
|
||||
/* flags */
|
||||
|
||||
@@ -1079,6 +1079,7 @@ extern void synchronize_net(void);
|
||||
extern int register_netdevice_notifier(struct notifier_block *nb);
|
||||
extern int unregister_netdevice_notifier(struct notifier_block *nb);
|
||||
extern int init_dummy_netdev(struct net_device *dev);
|
||||
extern void netdev_resync_ops(struct net_device *dev);
|
||||
|
||||
extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
|
||||
extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
|
||||
|
||||
+17
-10
@@ -109,11 +109,6 @@ extern struct list_head net_namespace_list;
|
||||
#ifdef CONFIG_NET_NS
|
||||
extern void __put_net(struct net *net);
|
||||
|
||||
static inline int net_alive(struct net *net)
|
||||
{
|
||||
return net && atomic_read(&net->count);
|
||||
}
|
||||
|
||||
static inline struct net *get_net(struct net *net)
|
||||
{
|
||||
atomic_inc(&net->count);
|
||||
@@ -145,11 +140,6 @@ int net_eq(const struct net *net1, const struct net *net2)
|
||||
}
|
||||
#else
|
||||
|
||||
static inline int net_alive(struct net *net)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline struct net *get_net(struct net *net)
|
||||
{
|
||||
return net;
|
||||
@@ -234,6 +224,23 @@ struct pernet_operations {
|
||||
void (*exit)(struct net *net);
|
||||
};
|
||||
|
||||
/*
|
||||
* Use these carefully. If you implement a network device and it
|
||||
* needs per network namespace operations use device pernet operations,
|
||||
* otherwise use pernet subsys operations.
|
||||
*
|
||||
* This is critically important. Most of the network code cleanup
|
||||
* runs with the assumption that dev_remove_pack has been called so no
|
||||
* new packets will arrive during and after the cleanup functions have
|
||||
* been called. dev_remove_pack is not per namespace so instead the
|
||||
* guarantee of no more packets arriving in a network namespace is
|
||||
* provided by ensuring that all network devices and all sockets have
|
||||
* left the network namespace before the cleanup methods are called.
|
||||
*
|
||||
* For the longest time the ipv4 icmp code was registered as a pernet
|
||||
* device which caused kernel oops, and panics during network
|
||||
* namespace cleanup. So please don't get this wrong.
|
||||
*/
|
||||
extern int register_pernet_subsys(struct pernet_operations *);
|
||||
extern void unregister_pernet_subsys(struct pernet_operations *);
|
||||
extern int register_pernet_gen_subsys(int *id, struct pernet_operations *);
|
||||
|
||||
Reference in New Issue
Block a user