Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'driver-core-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core

Pull driver core patches from Greg KH:
"Really tiny set of patches for this kernel. Nothing major, all
described in the shortlog and have been in linux-next for a while"

* tag 'driver-core-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
sysfs: fix warning when creating a sysfs group without attributes
firmware_loader: handle timeout via wait_for_completion_interruptible_timeout()
firmware_loader: abort request if wait_for_completion is interrupted
firmware: Correct function name in comment
device: Change dev_<level> logging functions to return void
device: Fix dev_dbg_once macro

+53 -73
+11 -18
drivers/base/core.c
··· 2080 2080 } 2081 2081 EXPORT_SYMBOL(dev_printk_emit); 2082 2082 2083 - static int __dev_printk(const char *level, const struct device *dev, 2083 + static void __dev_printk(const char *level, const struct device *dev, 2084 2084 struct va_format *vaf) 2085 2085 { 2086 - if (!dev) 2087 - return printk("%s(NULL device *): %pV", level, vaf); 2088 - 2089 - return dev_printk_emit(level[1] - '0', dev, 2090 - "%s %s: %pV", 2091 - dev_driver_string(dev), dev_name(dev), vaf); 2086 + if (dev) 2087 + dev_printk_emit(level[1] - '0', dev, "%s %s: %pV", 2088 + dev_driver_string(dev), dev_name(dev), vaf); 2089 + else 2090 + printk("%s(NULL device *): %pV", level, vaf); 2092 2091 } 2093 2092 2094 - int dev_printk(const char *level, const struct device *dev, 2095 - const char *fmt, ...) 2093 + void dev_printk(const char *level, const struct device *dev, 2094 + const char *fmt, ...) 2096 2095 { 2097 2096 struct va_format vaf; 2098 2097 va_list args; 2099 - int r; 2100 2098 2101 2099 va_start(args, fmt); 2102 2100 2103 2101 vaf.fmt = fmt; 2104 2102 vaf.va = &args; 2105 2103 2106 - r = __dev_printk(level, dev, &vaf); 2104 + __dev_printk(level, dev, &vaf); 2107 2105 2108 2106 va_end(args); 2109 - 2110 - return r; 2111 2107 } 2112 2108 EXPORT_SYMBOL(dev_printk); 2113 2109 2114 2110 #define define_dev_printk_level(func, kern_level) \ 2115 - int func(const struct device *dev, const char *fmt, ...) \ 2111 + void func(const struct device *dev, const char *fmt, ...) \ 2116 2112 { \ 2117 2113 struct va_format vaf; \ 2118 2114 va_list args; \ 2119 - int r; \ 2120 2115 \ 2121 2116 va_start(args, fmt); \ 2122 2117 \ 2123 2118 vaf.fmt = fmt; \ 2124 2119 vaf.va = &args; \ 2125 2120 \ 2126 - r = __dev_printk(kern_level, dev, &vaf); \ 2121 + __dev_printk(kern_level, dev, &vaf); \ 2127 2122 \ 2128 2123 va_end(args); \ 2129 - \ 2130 - return r; \ 2131 2124 } \ 2132 2125 EXPORT_SYMBOL(func); 2133 2126
+11 -22
drivers/base/firmware_class.c
··· 94 94 95 95 static inline long firmware_loading_timeout(void) 96 96 { 97 - return loading_timeout > 0 ? loading_timeout * HZ : MAX_SCHEDULE_TIMEOUT; 97 + return loading_timeout > 0 ? loading_timeout * HZ : MAX_JIFFY_OFFSET; 98 98 } 99 99 100 100 /* firmware behavior options */ ··· 446 446 */ 447 447 #ifdef CONFIG_FW_LOADER_USER_HELPER 448 448 struct firmware_priv { 449 - struct delayed_work timeout_work; 450 449 bool nowait; 451 450 struct device dev; 452 451 struct firmware_buf *buf; ··· 835 836 .write = firmware_data_write, 836 837 }; 837 838 838 - static void firmware_class_timeout_work(struct work_struct *work) 839 - { 840 - struct firmware_priv *fw_priv = container_of(work, 841 - struct firmware_priv, timeout_work.work); 842 - 843 - mutex_lock(&fw_lock); 844 - fw_load_abort(fw_priv); 845 - mutex_unlock(&fw_lock); 846 - } 847 - 848 839 static struct firmware_priv * 849 840 fw_create_instance(struct firmware *firmware, const char *fw_name, 850 841 struct device *device, unsigned int opt_flags) ··· 850 861 851 862 fw_priv->nowait = !!(opt_flags & FW_OPT_NOWAIT); 852 863 fw_priv->fw = firmware; 853 - INIT_DELAYED_WORK(&fw_priv->timeout_work, 854 - firmware_class_timeout_work); 855 - 856 864 f_dev = &fw_priv->dev; 857 865 858 866 device_initialize(f_dev); ··· 902 916 buf->need_uevent = true; 903 917 dev_set_uevent_suppress(f_dev, false); 904 918 dev_dbg(f_dev, "firmware: requesting %s\n", buf->fw_id); 905 - if (timeout != MAX_SCHEDULE_TIMEOUT) 906 - queue_delayed_work(system_power_efficient_wq, 907 - &fw_priv->timeout_work, timeout); 908 - 909 919 kobject_uevent(&fw_priv->dev.kobj, KOBJ_ADD); 920 + } else { 921 + timeout = MAX_JIFFY_OFFSET; 910 922 } 911 923 912 - retval = wait_for_completion_interruptible(&buf->completion); 924 + retval = wait_for_completion_interruptible_timeout(&buf->completion, 925 + timeout); 926 + if (retval == -ERESTARTSYS || !retval) { 927 + mutex_lock(&fw_lock); 928 + fw_load_abort(fw_priv); 929 + mutex_unlock(&fw_lock); 930 + } 913 931 914 - cancel_delayed_work_sync(&fw_priv->timeout_work); 915 932 if (is_fw_load_aborted(buf)) 916 933 retval = -EAGAIN; 917 934 else if (!buf->data) ··· 1182 1193 EXPORT_SYMBOL(request_firmware); 1183 1194 1184 1195 /** 1185 - * request_firmware: - load firmware directly without usermode helper 1196 + * request_firmware_direct: - load firmware directly without usermode helper 1186 1197 * @firmware_p: pointer to firmware image 1187 1198 * @name: name of firmware file 1188 1199 * @device: device for which firmware is being loaded
+1 -1
fs/sysfs/group.c
··· 99 99 return -EINVAL; 100 100 if (!grp->attrs && !grp->bin_attrs) { 101 101 WARN(1, "sysfs: (bin_)attrs not set by subsystem for group: %s/%s\n", 102 - kobj->name, grp->name ? "" : grp->name); 102 + kobj->name, grp->name ?: ""); 103 103 return -EINVAL; 104 104 } 105 105 if (grp->name) {
+30 -32
include/linux/device.h
··· 1038 1038 int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...); 1039 1039 1040 1040 extern __printf(3, 4) 1041 - int dev_printk(const char *level, const struct device *dev, 1042 - const char *fmt, ...); 1041 + void dev_printk(const char *level, const struct device *dev, 1042 + const char *fmt, ...); 1043 1043 extern __printf(2, 3) 1044 - int dev_emerg(const struct device *dev, const char *fmt, ...); 1044 + void dev_emerg(const struct device *dev, const char *fmt, ...); 1045 1045 extern __printf(2, 3) 1046 - int dev_alert(const struct device *dev, const char *fmt, ...); 1046 + void dev_alert(const struct device *dev, const char *fmt, ...); 1047 1047 extern __printf(2, 3) 1048 - int dev_crit(const struct device *dev, const char *fmt, ...); 1048 + void dev_crit(const struct device *dev, const char *fmt, ...); 1049 1049 extern __printf(2, 3) 1050 - int dev_err(const struct device *dev, const char *fmt, ...); 1050 + void dev_err(const struct device *dev, const char *fmt, ...); 1051 1051 extern __printf(2, 3) 1052 - int dev_warn(const struct device *dev, const char *fmt, ...); 1052 + void dev_warn(const struct device *dev, const char *fmt, ...); 1053 1053 extern __printf(2, 3) 1054 - int dev_notice(const struct device *dev, const char *fmt, ...); 1054 + void dev_notice(const struct device *dev, const char *fmt, ...); 1055 1055 extern __printf(2, 3) 1056 - int _dev_info(const struct device *dev, const char *fmt, ...); 1056 + void _dev_info(const struct device *dev, const char *fmt, ...); 1057 1057 1058 1058 #else 1059 1059 ··· 1065 1065 int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...) 1066 1066 { return 0; } 1067 1067 1068 - static inline int __dev_printk(const char *level, const struct device *dev, 1069 - struct va_format *vaf) 1070 - { return 0; } 1068 + static inline void __dev_printk(const char *level, const struct device *dev, 1069 + struct va_format *vaf) 1070 + {} 1071 1071 static inline __printf(3, 4) 1072 - int dev_printk(const char *level, const struct device *dev, 1073 - const char *fmt, ...) 1074 - { return 0; } 1072 + void dev_printk(const char *level, const struct device *dev, 1073 + const char *fmt, ...) 1074 + {} 1075 1075 1076 1076 static inline __printf(2, 3) 1077 - int dev_emerg(const struct device *dev, const char *fmt, ...) 1078 - { return 0; } 1077 + void dev_emerg(const struct device *dev, const char *fmt, ...) 1078 + {} 1079 1079 static inline __printf(2, 3) 1080 - int dev_crit(const struct device *dev, const char *fmt, ...) 1081 - { return 0; } 1080 + void dev_crit(const struct device *dev, const char *fmt, ...) 1081 + {} 1082 1082 static inline __printf(2, 3) 1083 - int dev_alert(const struct device *dev, const char *fmt, ...) 1084 - { return 0; } 1083 + void dev_alert(const struct device *dev, const char *fmt, ...) 1084 + {} 1085 1085 static inline __printf(2, 3) 1086 - int dev_err(const struct device *dev, const char *fmt, ...) 1087 - { return 0; } 1086 + void dev_err(const struct device *dev, const char *fmt, ...) 1087 + {} 1088 1088 static inline __printf(2, 3) 1089 - int dev_warn(const struct device *dev, const char *fmt, ...) 1090 - { return 0; } 1089 + void dev_warn(const struct device *dev, const char *fmt, ...) 1090 + {} 1091 1091 static inline __printf(2, 3) 1092 - int dev_notice(const struct device *dev, const char *fmt, ...) 1093 - { return 0; } 1092 + void dev_notice(const struct device *dev, const char *fmt, ...) 1093 + {} 1094 1094 static inline __printf(2, 3) 1095 - int _dev_info(const struct device *dev, const char *fmt, ...) 1096 - { return 0; } 1095 + void _dev_info(const struct device *dev, const char *fmt, ...) 1096 + {} 1097 1097 1098 1098 #endif 1099 1099 ··· 1119 1119 ({ \ 1120 1120 if (0) \ 1121 1121 dev_printk(KERN_DEBUG, dev, format, ##arg); \ 1122 - 0; \ 1123 1122 }) 1124 1123 #endif 1125 1124 ··· 1155 1156 #define dev_info_once(dev, fmt, ...) \ 1156 1157 dev_level_once(dev_info, dev, fmt, ##__VA_ARGS__) 1157 1158 #define dev_dbg_once(dev, fmt, ...) \ 1158 - dev_level_once(dev_info, dev, fmt, ##__VA_ARGS__) 1159 + dev_level_once(dev_dbg, dev, fmt, ##__VA_ARGS__) 1159 1160 1160 1161 #define dev_level_ratelimited(dev_level, dev, fmt, ...) \ 1161 1162 do { \ ··· 1214 1215 ({ \ 1215 1216 if (0) \ 1216 1217 dev_printk(KERN_DEBUG, dev, format, ##arg); \ 1217 - 0; \ 1218 1218 }) 1219 1219 #endif 1220 1220