aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS6
-rw-r--r--arch/um/drivers/harddog_user.c4
-rw-r--r--drivers/char/tty_ioctl.c2
-rw-r--r--drivers/pcmcia/pxa2xx_lubbock.c2
-rw-r--r--drivers/ps3/ps3-vuart.c1
-rw-r--r--fs/dquot.c32
-rw-r--r--fs/ecryptfs/crypto.c9
-rw-r--r--fs/ecryptfs/main.c5
-rw-r--r--fs/ecryptfs/messaging.c1
-rw-r--r--include/linux/quicklist.h8
-rw-r--r--lib/proportions.c37
-rw-r--r--scripts/kconfig/conf.c3
12 files changed, 55 insertions, 55 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 3c7db6222f86..907094f07142 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2029,7 +2029,7 @@ P: James Ketrenos
2029M: jketreno@linux.intel.com 2029M: jketreno@linux.intel.com
2030L: linux-wireless@vger.kernel.org 2030L: linux-wireless@vger.kernel.org
2031L: ipw2100-devel@lists.sourceforge.net 2031L: ipw2100-devel@lists.sourceforge.net
2032L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2032W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2033W: http://ipw2100.sourceforge.net 2033W: http://ipw2100.sourceforge.net
2034S: Supported 2034S: Supported
2035 2035
@@ -2040,7 +2040,7 @@ P: James Ketrenos
2040M: jketreno@linux.intel.com 2040M: jketreno@linux.intel.com
2041L: linux-wireless@vger.kernel.org 2041L: linux-wireless@vger.kernel.org
2042L: ipw2100-devel@lists.sourceforge.net 2042L: ipw2100-devel@lists.sourceforge.net
2043L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2043W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2044W: http://ipw2200.sourceforge.net 2044W: http://ipw2200.sourceforge.net
2045S: Supported 2045S: Supported
2046 2046
@@ -2597,7 +2597,7 @@ S: Maintained
2597MSI LAPTOP SUPPORT 2597MSI LAPTOP SUPPORT
2598P: Lennart Poettering 2598P: Lennart Poettering
2599M: mzxreary@0pointer.de 2599M: mzxreary@0pointer.de
2600L: https://tango.0pointer.de/mailman/listinfo/s270-linux 2600W: https://tango.0pointer.de/mailman/listinfo/s270-linux
2601W: http://0pointer.de/lennart/tchibo.html 2601W: http://0pointer.de/lennart/tchibo.html
2602S: Maintained 2602S: Maintained
2603 2603
diff --git a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c
index b56f8e0196a9..448ba59207a1 100644
--- a/arch/um/drivers/harddog_user.c
+++ b/arch/um/drivers/harddog_user.c
@@ -79,14 +79,14 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock)
79 n = read(in_fds[0], &c, sizeof(c)); 79 n = read(in_fds[0], &c, sizeof(c));
80 if (n == 0) { 80 if (n == 0) {
81 printk("harddog_open - EOF on watchdog pipe\n"); 81 printk("harddog_open - EOF on watchdog pipe\n");
82 helper_wait(pid); 82 helper_wait(pid, 1, NULL);
83 err = -EIO; 83 err = -EIO;
84 goto out_close_out; 84 goto out_close_out;
85 } 85 }
86 else if (n < 0) { 86 else if (n < 0) {
87 printk("harddog_open - read of watchdog pipe failed, " 87 printk("harddog_open - read of watchdog pipe failed, "
88 "err = %d\n", errno); 88 "err = %d\n", errno);
89 helper_wait(pid); 89 helper_wait(pid, 1, NULL);
90 err = n; 90 err = n;
91 goto out_close_out; 91 goto out_close_out;
92 } 92 }
diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c
index 1bdd2bf4f37d..e02d59245a17 100644
--- a/drivers/char/tty_ioctl.c
+++ b/drivers/char/tty_ioctl.c
@@ -62,7 +62,7 @@ void tty_wait_until_sent(struct tty_struct * tty, long timeout)
62 if (!timeout) 62 if (!timeout)
63 timeout = MAX_SCHEDULE_TIMEOUT; 63 timeout = MAX_SCHEDULE_TIMEOUT;
64 if (wait_event_interruptible_timeout(tty->write_wait, 64 if (wait_event_interruptible_timeout(tty->write_wait,
65 !tty->driver->chars_in_buffer(tty), timeout)) 65 !tty->driver->chars_in_buffer(tty), timeout) < 0)
66 return; 66 return;
67 if (tty->driver->wait_until_sent) 67 if (tty->driver->wait_until_sent)
68 tty->driver->wait_until_sent(tty, timeout); 68 tty->driver->wait_until_sent(tty, timeout);
diff --git a/drivers/pcmcia/pxa2xx_lubbock.c b/drivers/pcmcia/pxa2xx_lubbock.c
index 1510d6cde3e2..4a05802213c8 100644
--- a/drivers/pcmcia/pxa2xx_lubbock.c
+++ b/drivers/pcmcia/pxa2xx_lubbock.c
@@ -213,7 +213,7 @@ static struct pcmcia_low_level lubbock_pcmcia_ops = {
213 213
214#include "pxa2xx_base.h" 214#include "pxa2xx_base.h"
215 215
216int __init pcmcia_lubbock_init(struct sa1111_dev *sadev) 216int pcmcia_lubbock_init(struct sa1111_dev *sadev)
217{ 217{
218 int ret = -ENODEV; 218 int ret = -ENODEV;
219 219
diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c
index 9dea585ef806..bb8d5b1eec90 100644
--- a/drivers/ps3/ps3-vuart.c
+++ b/drivers/ps3/ps3-vuart.c
@@ -1074,7 +1074,6 @@ static int ps3_vuart_probe(struct ps3_system_bus_device *dev)
1074 if (result) { 1074 if (result) {
1075 dev_dbg(&dev->core, "%s:%d: drv->probe failed\n", 1075 dev_dbg(&dev->core, "%s:%d: drv->probe failed\n",
1076 __func__, __LINE__); 1076 __func__, __LINE__);
1077 down(&vuart_bus_priv.probe_mutex);
1078 goto fail_probe; 1077 goto fail_probe;
1079 } 1078 }
1080 1079
diff --git a/fs/dquot.c b/fs/dquot.c
index 686ab63a7c6c..cee7c6f428f0 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -827,6 +827,18 @@ static inline void dquot_decr_space(struct dquot *dquot, qsize_t number)
827 clear_bit(DQ_BLKS_B, &dquot->dq_flags); 827 clear_bit(DQ_BLKS_B, &dquot->dq_flags);
828} 828}
829 829
830static int warning_issued(struct dquot *dquot, const int warntype)
831{
832 int flag = (warntype == QUOTA_NL_BHARDWARN ||
833 warntype == QUOTA_NL_BSOFTLONGWARN) ? DQ_BLKS_B :
834 ((warntype == QUOTA_NL_IHARDWARN ||
835 warntype == QUOTA_NL_ISOFTLONGWARN) ? DQ_INODES_B : 0);
836
837 if (!flag)
838 return 0;
839 return test_and_set_bit(flag, &dquot->dq_flags);
840}
841
830#ifdef CONFIG_PRINT_QUOTA_WARNING 842#ifdef CONFIG_PRINT_QUOTA_WARNING
831static int flag_print_warnings = 1; 843static int flag_print_warnings = 1;
832 844
@@ -845,16 +857,12 @@ static inline int need_print_warning(struct dquot *dquot)
845} 857}
846 858
847/* Print warning to user which exceeded quota */ 859/* Print warning to user which exceeded quota */
848static void print_warning(struct dquot *dquot, const char warntype) 860static void print_warning(struct dquot *dquot, const int warntype)
849{ 861{
850 char *msg = NULL; 862 char *msg = NULL;
851 struct tty_struct *tty; 863 struct tty_struct *tty;
852 int flag = (warntype == QUOTA_NL_BHARDWARN ||
853 warntype == QUOTA_NL_BSOFTLONGWARN) ? DQ_BLKS_B :
854 ((warntype == QUOTA_NL_IHARDWARN ||
855 warntype == QUOTA_NL_ISOFTLONGWARN) ? DQ_INODES_B : 0);
856 864
857 if (!need_print_warning(dquot) || (flag && test_and_set_bit(flag, &dquot->dq_flags))) 865 if (!need_print_warning(dquot))
858 return; 866 return;
859 867
860 mutex_lock(&tty_mutex); 868 mutex_lock(&tty_mutex);
@@ -895,9 +903,6 @@ out_lock:
895 903
896#ifdef CONFIG_QUOTA_NETLINK_INTERFACE 904#ifdef CONFIG_QUOTA_NETLINK_INTERFACE
897 905
898/* Size of quota netlink message - actually an upperbound for buffer size */
899#define QUOTA_NL_MSG_SIZE 32
900
901/* Netlink family structure for quota */ 906/* Netlink family structure for quota */
902static struct genl_family quota_genl_family = { 907static struct genl_family quota_genl_family = {
903 .id = GENL_ID_GENERATE, 908 .id = GENL_ID_GENERATE,
@@ -914,11 +919,13 @@ static void send_warning(const struct dquot *dquot, const char warntype)
914 struct sk_buff *skb; 919 struct sk_buff *skb;
915 void *msg_head; 920 void *msg_head;
916 int ret; 921 int ret;
922 int msg_size = 4 * nla_total_size(sizeof(u32)) +
923 2 * nla_total_size(sizeof(u64));
917 924
918 /* We have to allocate using GFP_NOFS as we are called from a 925 /* We have to allocate using GFP_NOFS as we are called from a
919 * filesystem performing write and thus further recursion into 926 * filesystem performing write and thus further recursion into
920 * the fs to free some data could cause deadlocks. */ 927 * the fs to free some data could cause deadlocks. */
921 skb = genlmsg_new(QUOTA_NL_MSG_SIZE, GFP_NOFS); 928 skb = genlmsg_new(msg_size, GFP_NOFS);
922 if (!skb) { 929 if (!skb) {
923 printk(KERN_ERR 930 printk(KERN_ERR
924 "VFS: Not enough memory to send quota warning.\n"); 931 "VFS: Not enough memory to send quota warning.\n");
@@ -959,7 +966,7 @@ static void send_warning(const struct dquot *dquot, const char warntype)
959 "VFS: Failed to send notification message: %d\n", ret); 966 "VFS: Failed to send notification message: %d\n", ret);
960 return; 967 return;
961attr_err_out: 968attr_err_out:
962 printk(KERN_ERR "VFS: Failed to compose quota message: %d\n", ret); 969 printk(KERN_ERR "VFS: Not enough space to compose quota message!\n");
963err_out: 970err_out:
964 kfree_skb(skb); 971 kfree_skb(skb);
965} 972}
@@ -970,7 +977,8 @@ static inline void flush_warnings(struct dquot * const *dquots, char *warntype)
970 int i; 977 int i;
971 978
972 for (i = 0; i < MAXQUOTAS; i++) 979 for (i = 0; i < MAXQUOTAS; i++)
973 if (dquots[i] != NODQUOT && warntype[i] != QUOTA_NL_NOWARN) { 980 if (dquots[i] != NODQUOT && warntype[i] != QUOTA_NL_NOWARN &&
981 !warning_issued(dquots[i], warntype[i])) {
974#ifdef CONFIG_PRINT_QUOTA_WARNING 982#ifdef CONFIG_PRINT_QUOTA_WARNING
975 print_warning(dquots[i], warntype[i]); 983 print_warning(dquots[i], warntype[i]);
976#endif 984#endif
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index bbed2fd40fdc..f8ef0af919e7 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -799,7 +799,7 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
799 rc = ecryptfs_crypto_api_algify_cipher_name(&full_alg_name, 799 rc = ecryptfs_crypto_api_algify_cipher_name(&full_alg_name,
800 crypt_stat->cipher, "cbc"); 800 crypt_stat->cipher, "cbc");
801 if (rc) 801 if (rc)
802 goto out; 802 goto out_unlock;
803 crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0, 803 crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0,
804 CRYPTO_ALG_ASYNC); 804 CRYPTO_ALG_ASYNC);
805 kfree(full_alg_name); 805 kfree(full_alg_name);
@@ -808,12 +808,12 @@ int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
808 ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): " 808 ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): "
809 "Error initializing cipher [%s]\n", 809 "Error initializing cipher [%s]\n",
810 crypt_stat->cipher); 810 crypt_stat->cipher);
811 mutex_unlock(&crypt_stat->cs_tfm_mutex); 811 goto out_unlock;
812 goto out;
813 } 812 }
814 crypto_blkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY); 813 crypto_blkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY);
815 mutex_unlock(&crypt_stat->cs_tfm_mutex);
816 rc = 0; 814 rc = 0;
815out_unlock:
816 mutex_unlock(&crypt_stat->cs_tfm_mutex);
817out: 817out:
818 return rc; 818 return rc;
819} 819}
@@ -1847,6 +1847,7 @@ ecryptfs_add_new_key_tfm(struct ecryptfs_key_tfm **key_tfm, char *cipher_name,
1847 mutex_init(&tmp_tfm->key_tfm_mutex); 1847 mutex_init(&tmp_tfm->key_tfm_mutex);
1848 strncpy(tmp_tfm->cipher_name, cipher_name, 1848 strncpy(tmp_tfm->cipher_name, cipher_name,
1849 ECRYPTFS_MAX_CIPHER_NAME_SIZE); 1849 ECRYPTFS_MAX_CIPHER_NAME_SIZE);
1850 tmp_tfm->cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE] = '\0';
1850 tmp_tfm->key_size = key_size; 1851 tmp_tfm->key_size = key_size;
1851 rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm, 1852 rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm,
1852 tmp_tfm->cipher_name, 1853 tmp_tfm->cipher_name,
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index a277754da171..e5580bcb923a 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -138,11 +138,14 @@ int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry)
138 inode_info->lower_file = dentry_open(lower_dentry, 138 inode_info->lower_file = dentry_open(lower_dentry,
139 lower_mnt, 139 lower_mnt,
140 (O_RDWR | O_LARGEFILE)); 140 (O_RDWR | O_LARGEFILE));
141 if (IS_ERR(inode_info->lower_file)) 141 if (IS_ERR(inode_info->lower_file)) {
142 dget(lower_dentry);
143 mntget(lower_mnt);
142 inode_info->lower_file = dentry_open(lower_dentry, 144 inode_info->lower_file = dentry_open(lower_dentry,
143 lower_mnt, 145 lower_mnt,
144 (O_RDONLY 146 (O_RDONLY
145 | O_LARGEFILE)); 147 | O_LARGEFILE));
148 }
146 if (IS_ERR(inode_info->lower_file)) { 149 if (IS_ERR(inode_info->lower_file)) {
147 printk(KERN_ERR "Error opening lower persistent file " 150 printk(KERN_ERR "Error opening lower persistent file "
148 "for lower_dentry [0x%p] and lower_mnt [0x%p]\n", 151 "for lower_dentry [0x%p] and lower_mnt [0x%p]\n",
diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c
index a96d341d154d..9cc2aec27b0d 100644
--- a/fs/ecryptfs/messaging.c
+++ b/fs/ecryptfs/messaging.c
@@ -427,6 +427,7 @@ int ecryptfs_init_messaging(unsigned int transport)
427 if (!ecryptfs_daemon_id_hash) { 427 if (!ecryptfs_daemon_id_hash) {
428 rc = -ENOMEM; 428 rc = -ENOMEM;
429 ecryptfs_printk(KERN_ERR, "Failed to allocate memory\n"); 429 ecryptfs_printk(KERN_ERR, "Failed to allocate memory\n");
430 mutex_unlock(&ecryptfs_daemon_id_hash_mux);
430 goto out; 431 goto out;
431 } 432 }
432 for (i = 0; i < ecryptfs_hash_buckets; i++) 433 for (i = 0; i < ecryptfs_hash_buckets; i++)
diff --git a/include/linux/quicklist.h b/include/linux/quicklist.h
index 9371c6116df3..39b66713a0bb 100644
--- a/include/linux/quicklist.h
+++ b/include/linux/quicklist.h
@@ -56,14 +56,6 @@ static inline void __quicklist_free(int nr, void (*dtor)(void *), void *p,
56 struct page *page) 56 struct page *page)
57{ 57{
58 struct quicklist *q; 58 struct quicklist *q;
59 int nid = page_to_nid(page);
60
61 if (unlikely(nid != numa_node_id())) {
62 if (dtor)
63 dtor(p);
64 __free_page(page);
65 return;
66 }
67 59
68 q = &get_cpu_var(quicklist)[nr]; 60 q = &get_cpu_var(quicklist)[nr];
69 *(void **)p = q->page; 61 *(void **)p = q->page;
diff --git a/lib/proportions.c b/lib/proportions.c
index 332d8c58184d..9508d9a7af3e 100644
--- a/lib/proportions.c
+++ b/lib/proportions.c
@@ -190,6 +190,8 @@ prop_adjust_shift(int *pl_shift, unsigned long *pl_period, int new_shift)
190 * PERCPU 190 * PERCPU
191 */ 191 */
192 192
193#define PROP_BATCH (8*(1+ilog2(nr_cpu_ids)))
194
193int prop_local_init_percpu(struct prop_local_percpu *pl) 195int prop_local_init_percpu(struct prop_local_percpu *pl)
194{ 196{
195 spin_lock_init(&pl->lock); 197 spin_lock_init(&pl->lock);
@@ -230,31 +232,24 @@ void prop_norm_percpu(struct prop_global *pg, struct prop_local_percpu *pl)
230 232
231 spin_lock_irqsave(&pl->lock, flags); 233 spin_lock_irqsave(&pl->lock, flags);
232 prop_adjust_shift(&pl->shift, &pl->period, pg->shift); 234 prop_adjust_shift(&pl->shift, &pl->period, pg->shift);
235
233 /* 236 /*
234 * For each missed period, we half the local counter. 237 * For each missed period, we half the local counter.
235 * basically: 238 * basically:
236 * pl->events >> (global_period - pl->period); 239 * pl->events >> (global_period - pl->period);
237 *
238 * but since the distributed nature of percpu counters make division
239 * rather hard, use a regular subtraction loop. This is safe, because
240 * the events will only every be incremented, hence the subtraction
241 * can never result in a negative number.
242 */ 240 */
243 while (pl->period != global_period) { 241 period = (global_period - pl->period) >> (pg->shift - 1);
244 unsigned long val = percpu_counter_read(&pl->events); 242 if (period < BITS_PER_LONG) {
245 unsigned long half = (val + 1) >> 1; 243 s64 val = percpu_counter_read(&pl->events);
246 244
247 /* 245 if (val < (nr_cpu_ids * PROP_BATCH))
248 * Half of zero won't be much less, break out. 246 val = percpu_counter_sum(&pl->events);
249 * This limits the loop to shift iterations, even 247
250 * if we missed a million. 248 __percpu_counter_add(&pl->events, -val + (val >> period),
251 */ 249 PROP_BATCH);
252 if (!val) 250 } else
253 break; 251 percpu_counter_set(&pl->events, 0);
254 252
255 percpu_counter_add(&pl->events, -half);
256 pl->period += period;
257 }
258 pl->period = global_period; 253 pl->period = global_period;
259 spin_unlock_irqrestore(&pl->lock, flags); 254 spin_unlock_irqrestore(&pl->lock, flags);
260} 255}
@@ -267,7 +262,7 @@ void __prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl)
267 struct prop_global *pg = prop_get_global(pd); 262 struct prop_global *pg = prop_get_global(pd);
268 263
269 prop_norm_percpu(pg, pl); 264 prop_norm_percpu(pg, pl);
270 percpu_counter_add(&pl->events, 1); 265 __percpu_counter_add(&pl->events, 1, PROP_BATCH);
271 percpu_counter_add(&pg->events, 1); 266 percpu_counter_add(&pg->events, 1);
272 prop_put_global(pd, pg); 267 prop_put_global(pd, pg);
273} 268}
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index a38787a881ea..8d6f17490c5e 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -374,7 +374,8 @@ static int conf_choice(struct menu *menu)
374 continue; 374 continue;
375 break; 375 break;
376 case set_random: 376 case set_random:
377 def = (random() % cnt) + 1; 377 if (is_new)
378 def = (random() % cnt) + 1;
378 case set_default: 379 case set_default:
379 case set_yes: 380 case set_yes:
380 case set_mod: 381 case set_mod: