diff options
Diffstat (limited to 'target/linux/generic')
5 files changed, 377 insertions, 0 deletions
| diff --git a/target/linux/generic/patches-2.6.32/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.32/223-kobject-add-broadcast_uevent.patch new file mode 100644 index 000000000..393668b8a --- /dev/null +++ b/target/linux/generic/patches-2.6.32/223-kobject-add-broadcast_uevent.patch @@ -0,0 +1,69 @@ +--- a/include/linux/kobject.h ++++ b/include/linux/kobject.h +@@ -30,6 +30,8 @@ + #define UEVENT_NUM_ENVP			32	/* number of env pointers */ + #define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */ +  ++struct sk_buff; ++ + /* path to the userspace helper executed on an event */ + extern char uevent_helper[]; +  +@@ -208,6 +210,10 @@ int add_uevent_var(struct kobj_uevent_en +  + int kobject_action_type(const char *buf, size_t count, + 			enum kobject_action *type); ++ ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation); ++ + #else + static inline int kobject_uevent(struct kobject *kobj, + 				 enum kobject_action action) +@@ -224,6 +230,16 @@ static inline int add_uevent_var(struct  + static inline int kobject_action_type(const char *buf, size_t count, + 				      enum kobject_action *type) + { return -EINVAL; } ++ ++void kfree_skb(struct sk_buff *); ++ ++static inline int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++				   gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++ + #endif +  + #endif /* _KOBJECT_H_ */ +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -330,6 +330,27 @@ int add_uevent_var(struct kobj_uevent_en + EXPORT_SYMBOL_GPL(add_uevent_var); +  + #if defined(CONFIG_NET) ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	if (!uevent_sock) { ++		kfree_skb(skb); ++		return -ENODEV; ++	} ++ ++	return netlink_broadcast(uevent_sock, skb, pid, group, allocation);; ++} ++#else ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++#endif ++EXPORT_SYMBOL_GPL(broadcast_uevent); ++ ++#if defined(CONFIG_NET) + static int __init kobject_uevent_init(void) + { + 	uevent_sock = netlink_kernel_create(&init_net, NETLINK_KOBJECT_UEVENT, diff --git a/target/linux/generic/patches-2.6.33/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.33/223-kobject-add-broadcast_uevent.patch new file mode 100644 index 000000000..f1b6a8fce --- /dev/null +++ b/target/linux/generic/patches-2.6.33/223-kobject-add-broadcast_uevent.patch @@ -0,0 +1,69 @@ +--- a/include/linux/kobject.h ++++ b/include/linux/kobject.h +@@ -30,6 +30,8 @@ + #define UEVENT_NUM_ENVP			32	/* number of env pointers */ + #define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */ +  ++struct sk_buff; ++ + /* path to the userspace helper executed on an event */ + extern char uevent_helper[]; +  +@@ -208,6 +210,10 @@ int add_uevent_var(struct kobj_uevent_en +  + int kobject_action_type(const char *buf, size_t count, + 			enum kobject_action *type); ++ ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation); ++ + #else + static inline int kobject_uevent(struct kobject *kobj, + 				 enum kobject_action action) +@@ -224,6 +230,16 @@ static inline int add_uevent_var(struct  + static inline int kobject_action_type(const char *buf, size_t count, + 				      enum kobject_action *type) + { return -EINVAL; } ++ ++void kfree_skb(struct sk_buff *); ++ ++static inline int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++				   int allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++ + #endif +  + #endif /* _KOBJECT_H_ */ +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -330,6 +330,27 @@ int add_uevent_var(struct kobj_uevent_en + EXPORT_SYMBOL_GPL(add_uevent_var); +  + #if defined(CONFIG_NET) ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation) ++{ ++	if (!uevent_sock) { ++		kfree_skb(skb); ++		return -ENODEV; ++	} ++ ++	return netlink_broadcast(uevent_sock, skb, pid, group, allocation);; ++} ++#else ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++#endif ++EXPORT_SYMBOL_GPL(broadcast_uevent); ++ ++#if defined(CONFIG_NET) + static int __init kobject_uevent_init(void) + { + 	uevent_sock = netlink_kernel_create(&init_net, NETLINK_KOBJECT_UEVENT, diff --git a/target/linux/generic/patches-2.6.34/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.34/223-kobject-add-broadcast_uevent.patch new file mode 100644 index 000000000..d851d313e --- /dev/null +++ b/target/linux/generic/patches-2.6.34/223-kobject-add-broadcast_uevent.patch @@ -0,0 +1,69 @@ +--- a/include/linux/kobject.h ++++ b/include/linux/kobject.h +@@ -30,6 +30,8 @@ + #define UEVENT_NUM_ENVP			32	/* number of env pointers */ + #define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */ +  ++struct sk_buff; ++ + /* path to the userspace helper executed on an event */ + extern char uevent_helper[]; +  +@@ -208,6 +210,10 @@ int add_uevent_var(struct kobj_uevent_en +  + int kobject_action_type(const char *buf, size_t count, + 			enum kobject_action *type); ++ ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation); ++ + #else + static inline int kobject_uevent(struct kobject *kobj, + 				 enum kobject_action action) +@@ -224,6 +230,16 @@ static inline int add_uevent_var(struct  + static inline int kobject_action_type(const char *buf, size_t count, + 				      enum kobject_action *type) + { return -EINVAL; } ++ ++void kfree_skb(struct sk_buff *); ++ ++static inline int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++				   int allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++ + #endif +  + #endif /* _KOBJECT_H_ */ +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -331,6 +331,27 @@ int add_uevent_var(struct kobj_uevent_en + EXPORT_SYMBOL_GPL(add_uevent_var); +  + #if defined(CONFIG_NET) ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation) ++{ ++	if (!uevent_sock) { ++		kfree_skb(skb); ++		return -ENODEV; ++	} ++ ++	return netlink_broadcast(uevent_sock, skb, pid, group, allocation);; ++} ++#else ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     int allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++#endif ++EXPORT_SYMBOL_GPL(broadcast_uevent); ++ ++#if defined(CONFIG_NET) + static int __init kobject_uevent_init(void) + { + 	uevent_sock = netlink_kernel_create(&init_net, NETLINK_KOBJECT_UEVENT, diff --git a/target/linux/generic/patches-2.6.35/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.35/223-kobject-add-broadcast_uevent.patch new file mode 100644 index 000000000..c09e13e11 --- /dev/null +++ b/target/linux/generic/patches-2.6.35/223-kobject-add-broadcast_uevent.patch @@ -0,0 +1,85 @@ +--- a/include/linux/kobject.h ++++ b/include/linux/kobject.h +@@ -30,6 +30,8 @@ + #define UEVENT_NUM_ENVP			32	/* number of env pointers */ + #define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */ +  ++struct sk_buff; ++ + /* path to the userspace helper executed on an event */ + extern char uevent_helper[]; +  +@@ -246,6 +248,10 @@ int add_uevent_var(struct kobj_uevent_en +  + int kobject_action_type(const char *buf, size_t count, + 			enum kobject_action *type); ++ ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation); ++ + #else + static inline int kobject_uevent(struct kobject *kobj, + 				 enum kobject_action action) +@@ -262,6 +268,16 @@ static inline int add_uevent_var(struct  + static inline int kobject_action_type(const char *buf, size_t count, + 				      enum kobject_action *type) + { return -EINVAL; } ++ ++void kfree_skb(struct sk_buff *); ++ ++static inline int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++				   gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++ + #endif +  + #endif /* _KOBJECT_H_ */ +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -377,6 +377,43 @@ int add_uevent_var(struct kobj_uevent_en + EXPORT_SYMBOL_GPL(add_uevent_var); +  + #if defined(CONFIG_NET) ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	struct uevent_sock *ue_sk; ++	int err = 0; ++ ++	/* send netlink message */ ++	mutex_lock(&uevent_sock_mutex); ++	list_for_each_entry(ue_sk, &uevent_sock_list, list) { ++		struct sock *uevent_sock = ue_sk->sk; ++		struct sk_buff *skb2; ++ ++		skb2 = skb_clone(skb, allocation); ++		if (!skb2) ++			break; ++ ++		err = netlink_broadcast(uevent_sock, skb2, pid, group, ++					allocation); ++		if (err) ++			break; ++	} ++	mutex_unlock(&uevent_sock_mutex); ++ ++	kfree_skb(skb); ++	return err; ++} ++#else ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++#endif ++EXPORT_SYMBOL_GPL(broadcast_uevent); ++ ++#if defined(CONFIG_NET) + static int uevent_net_init(struct net *net) + { + 	struct uevent_sock *ue_sk; diff --git a/target/linux/generic/patches-2.6.36/223-kobject-add-broadcast_uevent.patch b/target/linux/generic/patches-2.6.36/223-kobject-add-broadcast_uevent.patch new file mode 100644 index 000000000..7f50a199d --- /dev/null +++ b/target/linux/generic/patches-2.6.36/223-kobject-add-broadcast_uevent.patch @@ -0,0 +1,85 @@ +--- a/include/linux/kobject.h ++++ b/include/linux/kobject.h +@@ -31,6 +31,8 @@ + #define UEVENT_NUM_ENVP			32	/* number of env pointers */ + #define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */ +  ++struct sk_buff; ++ + /* path to the userspace helper executed on an event */ + extern char uevent_helper[]; +  +@@ -213,6 +215,10 @@ int add_uevent_var(struct kobj_uevent_en +  + int kobject_action_type(const char *buf, size_t count, + 			enum kobject_action *type); ++ ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation); ++ + #else + static inline int kobject_uevent(struct kobject *kobj, + 				 enum kobject_action action) +@@ -229,6 +235,16 @@ static inline int add_uevent_var(struct  + static inline int kobject_action_type(const char *buf, size_t count, + 				      enum kobject_action *type) + { return -EINVAL; } ++ ++void kfree_skb(struct sk_buff *); ++ ++static inline int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++				   gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++ + #endif +  + #endif /* _KOBJECT_H_ */ +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -377,6 +377,43 @@ int add_uevent_var(struct kobj_uevent_en + EXPORT_SYMBOL_GPL(add_uevent_var); +  + #if defined(CONFIG_NET) ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	struct uevent_sock *ue_sk; ++	int err = 0; ++ ++	/* send netlink message */ ++	mutex_lock(&uevent_sock_mutex); ++	list_for_each_entry(ue_sk, &uevent_sock_list, list) { ++		struct sock *uevent_sock = ue_sk->sk; ++		struct sk_buff *skb2; ++ ++		skb2 = skb_clone(skb, allocation); ++		if (!skb2) ++			break; ++ ++		err = netlink_broadcast(uevent_sock, skb2, pid, group, ++					allocation); ++		if (err) ++			break; ++	} ++	mutex_unlock(&uevent_sock_mutex); ++ ++	kfree_skb(skb); ++	return err; ++} ++#else ++int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group, ++		     gfp_t allocation) ++{ ++	kfree_skb(skb); ++	return 0; ++} ++#endif ++EXPORT_SYMBOL_GPL(broadcast_uevent); ++ ++#if defined(CONFIG_NET) + static int uevent_net_init(struct net *net) + { + 	struct uevent_sock *ue_sk; | 
