aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt13
-rw-r--r--drivers/hwmon/w83627ehf.c36
-rw-r--r--drivers/scsi/scsi_lib.c2
-rw-r--r--drivers/scsi/scsi_priv.h3
-rw-r--r--drivers/scsi/scsi_sysfs.c17
-rw-r--r--fs/nfs/nfs4proc.c34
-rw-r--r--fs/nfs/nfs4renewd.c2
-rw-r--r--fs/nfs/super.c12
-rw-r--r--kernel/sched_debug.c8
-rw-r--r--net/sunrpc/auth_gss/auth_gss.c2
10 files changed, 86 insertions, 43 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 33121d6c827c..e5b447a0acda 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -527,29 +527,30 @@ and is between 256 and 4096 characters. It is defined in the file
527 Format: <area>[,<node>] 527 Format: <area>[,<node>]
528 See also Documentation/networking/decnet.txt. 528 See also Documentation/networking/decnet.txt.
529 529
530 default_blu= [VT] 530 vt.default_blu= [VT]
531 Format: <blue0>,<blue1>,<blue2>,...,<blue15> 531 Format: <blue0>,<blue1>,<blue2>,...,<blue15>
532 Change the default blue palette of the console. 532 Change the default blue palette of the console.
533 This is a 16-member array composed of values 533 This is a 16-member array composed of values
534 ranging from 0-255. 534 ranging from 0-255.
535 535
536 default_grn= [VT] 536 vt.default_grn= [VT]
537 Format: <green0>,<green1>,<green2>,...,<green15> 537 Format: <green0>,<green1>,<green2>,...,<green15>
538 Change the default green palette of the console. 538 Change the default green palette of the console.
539 This is a 16-member array composed of values 539 This is a 16-member array composed of values
540 ranging from 0-255. 540 ranging from 0-255.
541 541
542 default_red= [VT] 542 vt.default_red= [VT]
543 Format: <red0>,<red1>,<red2>,...,<red15> 543 Format: <red0>,<red1>,<red2>,...,<red15>
544 Change the default red palette of the console. 544 Change the default red palette of the console.
545 This is a 16-member array composed of values 545 This is a 16-member array composed of values
546 ranging from 0-255. 546 ranging from 0-255.
547 547
548 default_utf8= [VT] 548 vt.default_utf8=
549 [VT]
549 Format=<0|1> 550 Format=<0|1>
550 Set system-wide default UTF-8 mode for all tty's. 551 Set system-wide default UTF-8 mode for all tty's.
551 Default is 0 and by setting to 1, it enables UTF-8 552 Default is 1, i.e. UTF-8 mode is enabled for all
552 mode for all newly opened or allocated terminals. 553 newly opened terminals.
553 554
554 dhash_entries= [KNL] 555 dhash_entries= [KNL]
555 Set number of hash buckets for dentry cache. 556 Set number of hash buckets for dentry cache.
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index b15c6a998b72..d5aa25ce5dbd 100644
--- a/drivers/hwmon/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
@@ -1276,23 +1276,31 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
1276 1276
1277 data->vrm = vid_which_vrm(); 1277 data->vrm = vid_which_vrm();
1278 superio_enter(sio_data->sioreg); 1278 superio_enter(sio_data->sioreg);
1279 /* Set VID input sensibility if needed. In theory the BIOS should
1280 have set it, but in practice it's not always the case. */
1281 en_vrm10 = superio_inb(sio_data->sioreg, SIO_REG_EN_VRM10);
1282 if ((en_vrm10 & 0x08) && data->vrm != 100) {
1283 dev_warn(dev, "Setting VID input voltage to TTL\n");
1284 superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
1285 en_vrm10 & ~0x08);
1286 } else if (!(en_vrm10 & 0x08) && data->vrm == 100) {
1287 dev_warn(dev, "Setting VID input voltage to VRM10\n");
1288 superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
1289 en_vrm10 | 0x08);
1290 }
1291 /* Read VID value */ 1279 /* Read VID value */
1292 superio_select(sio_data->sioreg, W83627EHF_LD_HWM); 1280 superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
1293 if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) 1281 if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) {
1282 /* Set VID input sensibility if needed. In theory the BIOS
1283 should have set it, but in practice it's not always the
1284 case. We only do it for the W83627EHF/EHG because the
1285 W83627DHG is more complex in this respect. */
1286 if (sio_data->kind == w83627ehf) {
1287 en_vrm10 = superio_inb(sio_data->sioreg,
1288 SIO_REG_EN_VRM10);
1289 if ((en_vrm10 & 0x08) && data->vrm == 90) {
1290 dev_warn(dev, "Setting VID input voltage to "
1291 "TTL\n");
1292 superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
1293 en_vrm10 & ~0x08);
1294 } else if (!(en_vrm10 & 0x08) && data->vrm == 100) {
1295 dev_warn(dev, "Setting VID input voltage to "
1296 "VRM10\n");
1297 superio_outb(sio_data->sioreg, SIO_REG_EN_VRM10,
1298 en_vrm10 | 0x08);
1299 }
1300 }
1301
1294 data->vid = superio_inb(sio_data->sioreg, SIO_REG_VID_DATA) & 0x3f; 1302 data->vid = superio_inb(sio_data->sioreg, SIO_REG_VID_DATA) & 0x3f;
1295 else { 1303 } else {
1296 dev_info(dev, "VID pins in output mode, CPU VID not " 1304 dev_info(dev, "VID pins in output mode, CPU VID not "
1297 "available\n"); 1305 "available\n");
1298 data->vid = 0x3f; 1306 data->vid = 0x3f;
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 8df8267ce316..60f77c4b3946 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1346,7 +1346,7 @@ int scsi_prep_return(struct request_queue *q, struct request *req, int ret)
1346} 1346}
1347EXPORT_SYMBOL(scsi_prep_return); 1347EXPORT_SYMBOL(scsi_prep_return);
1348 1348
1349static int scsi_prep_fn(struct request_queue *q, struct request *req) 1349int scsi_prep_fn(struct request_queue *q, struct request *req)
1350{ 1350{
1351 struct scsi_device *sdev = q->queuedata; 1351 struct scsi_device *sdev = q->queuedata;
1352 int ret = BLKPREP_KILL; 1352 int ret = BLKPREP_KILL;
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index ee8efe849bf4..1de52b6ded40 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -73,6 +73,9 @@ extern struct request_queue *scsi_alloc_queue(struct scsi_device *sdev);
73extern void scsi_free_queue(struct request_queue *q); 73extern void scsi_free_queue(struct request_queue *q);
74extern int scsi_init_queue(void); 74extern int scsi_init_queue(void);
75extern void scsi_exit_queue(void); 75extern void scsi_exit_queue(void);
76struct request_queue;
77struct request;
78extern int scsi_prep_fn(struct request_queue *, struct request *);
76 79
77/* scsi_proc.c */ 80/* scsi_proc.c */
78#ifdef CONFIG_SCSI_PROC_FS 81#ifdef CONFIG_SCSI_PROC_FS
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index f374fdcb6815..00b386677392 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -373,12 +373,29 @@ static int scsi_bus_resume(struct device * dev)
373 return err; 373 return err;
374} 374}
375 375
376static int scsi_bus_remove(struct device *dev)
377{
378 struct device_driver *drv = dev->driver;
379 struct scsi_device *sdev = to_scsi_device(dev);
380 int err = 0;
381
382 /* reset the prep_fn back to the default since the
383 * driver may have altered it and it's being removed */
384 blk_queue_prep_rq(sdev->request_queue, scsi_prep_fn);
385
386 if (drv && drv->remove)
387 err = drv->remove(dev);
388
389 return 0;
390}
391
376struct bus_type scsi_bus_type = { 392struct bus_type scsi_bus_type = {
377 .name = "scsi", 393 .name = "scsi",
378 .match = scsi_bus_match, 394 .match = scsi_bus_match,
379 .uevent = scsi_bus_uevent, 395 .uevent = scsi_bus_uevent,
380 .suspend = scsi_bus_suspend, 396 .suspend = scsi_bus_suspend,
381 .resume = scsi_bus_resume, 397 .resume = scsi_bus_resume,
398 .remove = scsi_bus_remove,
382}; 399};
383 400
384int scsi_sysfs_register(void) 401int scsi_sysfs_register(void)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index f03d9d5f5ba4..9e2e1c7291db 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -741,10 +741,10 @@ static void nfs4_open_confirm_done(struct rpc_task *task, void *calldata)
741 if (data->rpc_status == 0) { 741 if (data->rpc_status == 0) {
742 memcpy(data->o_res.stateid.data, data->c_res.stateid.data, 742 memcpy(data->o_res.stateid.data, data->c_res.stateid.data,
743 sizeof(data->o_res.stateid.data)); 743 sizeof(data->o_res.stateid.data));
744 nfs_confirm_seqid(&data->owner->so_seqid, 0);
744 renew_lease(data->o_res.server, data->timestamp); 745 renew_lease(data->o_res.server, data->timestamp);
745 data->rpc_done = 1; 746 data->rpc_done = 1;
746 } 747 }
747 nfs_confirm_seqid(&data->owner->so_seqid, data->rpc_status);
748 nfs_increment_open_seqid(data->rpc_status, data->c_arg.seqid); 748 nfs_increment_open_seqid(data->rpc_status, data->c_arg.seqid);
749} 749}
750 750
@@ -759,7 +759,6 @@ static void nfs4_open_confirm_release(void *calldata)
759 /* In case of error, no cleanup! */ 759 /* In case of error, no cleanup! */
760 if (!data->rpc_done) 760 if (!data->rpc_done)
761 goto out_free; 761 goto out_free;
762 nfs_confirm_seqid(&data->owner->so_seqid, 0);
763 state = nfs4_opendata_to_nfs4_state(data); 762 state = nfs4_opendata_to_nfs4_state(data);
764 if (!IS_ERR(state)) 763 if (!IS_ERR(state))
765 nfs4_close_state(&data->path, state, data->o_arg.open_flags); 764 nfs4_close_state(&data->path, state, data->o_arg.open_flags);
@@ -886,7 +885,6 @@ static void nfs4_open_release(void *calldata)
886 /* In case we need an open_confirm, no cleanup! */ 885 /* In case we need an open_confirm, no cleanup! */
887 if (data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM) 886 if (data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)
888 goto out_free; 887 goto out_free;
889 nfs_confirm_seqid(&data->owner->so_seqid, 0);
890 state = nfs4_opendata_to_nfs4_state(data); 888 state = nfs4_opendata_to_nfs4_state(data);
891 if (!IS_ERR(state)) 889 if (!IS_ERR(state))
892 nfs4_close_state(&data->path, state, data->o_arg.open_flags); 890 nfs4_close_state(&data->path, state, data->o_arg.open_flags);
@@ -3333,6 +3331,12 @@ static struct nfs4_lockdata *nfs4_alloc_lockdata(struct file_lock *fl,
3333 3331
3334 p->arg.fh = NFS_FH(inode); 3332 p->arg.fh = NFS_FH(inode);
3335 p->arg.fl = &p->fl; 3333 p->arg.fl = &p->fl;
3334 if (!(lsp->ls_seqid.flags & NFS_SEQID_CONFIRMED)) {
3335 p->arg.open_seqid = nfs_alloc_seqid(&lsp->ls_state->owner->so_seqid);
3336 if (p->arg.open_seqid == NULL)
3337 goto out_free;
3338
3339 }
3336 p->arg.lock_seqid = nfs_alloc_seqid(&lsp->ls_seqid); 3340 p->arg.lock_seqid = nfs_alloc_seqid(&lsp->ls_seqid);
3337 if (p->arg.lock_seqid == NULL) 3341 if (p->arg.lock_seqid == NULL)
3338 goto out_free; 3342 goto out_free;
@@ -3345,6 +3349,8 @@ static struct nfs4_lockdata *nfs4_alloc_lockdata(struct file_lock *fl,
3345 memcpy(&p->fl, fl, sizeof(p->fl)); 3349 memcpy(&p->fl, fl, sizeof(p->fl));
3346 return p; 3350 return p;
3347out_free: 3351out_free:
3352 if (p->arg.open_seqid != NULL)
3353 nfs_free_seqid(p->arg.open_seqid);
3348 kfree(p); 3354 kfree(p);
3349 return NULL; 3355 return NULL;
3350} 3356}
@@ -3361,23 +3367,23 @@ static void nfs4_lock_prepare(struct rpc_task *task, void *calldata)
3361 .rpc_cred = sp->so_cred, 3367 .rpc_cred = sp->so_cred,
3362 }; 3368 };
3363 3369
3364 if (nfs_wait_on_sequence(data->arg.lock_seqid, task) != 0)
3365 return;
3366 dprintk("%s: begin!\n", __FUNCTION__); 3370 dprintk("%s: begin!\n", __FUNCTION__);
3367 /* Do we need to do an open_to_lock_owner? */ 3371 /* Do we need to do an open_to_lock_owner? */
3368 if (!(data->arg.lock_seqid->sequence->flags & NFS_SEQID_CONFIRMED)) { 3372 if (!(data->arg.lock_seqid->sequence->flags & NFS_SEQID_CONFIRMED)) {
3369 data->arg.open_seqid = nfs_alloc_seqid(&sp->so_seqid); 3373 if (nfs_wait_on_sequence(data->arg.open_seqid, task) != 0)
3370 if (data->arg.open_seqid == NULL) { 3374 return;
3371 data->rpc_status = -ENOMEM;
3372 task->tk_action = NULL;
3373 goto out;
3374 }
3375 data->arg.open_stateid = &state->stateid; 3375 data->arg.open_stateid = &state->stateid;
3376 data->arg.new_lock_owner = 1; 3376 data->arg.new_lock_owner = 1;
3377 /* Retest in case we raced... */
3378 if (!(data->arg.lock_seqid->sequence->flags & NFS_SEQID_CONFIRMED))
3379 goto do_rpc;
3377 } 3380 }
3381 if (nfs_wait_on_sequence(data->arg.lock_seqid, task) != 0)
3382 return;
3383 data->arg.new_lock_owner = 0;
3384do_rpc:
3378 data->timestamp = jiffies; 3385 data->timestamp = jiffies;
3379 rpc_call_setup(task, &msg, 0); 3386 rpc_call_setup(task, &msg, 0);
3380out:
3381 dprintk("%s: done!, ret = %d\n", __FUNCTION__, data->rpc_status); 3387 dprintk("%s: done!, ret = %d\n", __FUNCTION__, data->rpc_status);
3382} 3388}
3383 3389
@@ -3413,8 +3419,6 @@ static void nfs4_lock_release(void *calldata)
3413 struct nfs4_lockdata *data = calldata; 3419 struct nfs4_lockdata *data = calldata;
3414 3420
3415 dprintk("%s: begin!\n", __FUNCTION__); 3421 dprintk("%s: begin!\n", __FUNCTION__);
3416 if (data->arg.open_seqid != NULL)
3417 nfs_free_seqid(data->arg.open_seqid);
3418 if (data->cancelled != 0) { 3422 if (data->cancelled != 0) {
3419 struct rpc_task *task; 3423 struct rpc_task *task;
3420 task = nfs4_do_unlck(&data->fl, data->ctx, data->lsp, 3424 task = nfs4_do_unlck(&data->fl, data->ctx, data->lsp,
@@ -3424,6 +3428,8 @@ static void nfs4_lock_release(void *calldata)
3424 dprintk("%s: cancelling lock!\n", __FUNCTION__); 3428 dprintk("%s: cancelling lock!\n", __FUNCTION__);
3425 } else 3429 } else
3426 nfs_free_seqid(data->arg.lock_seqid); 3430 nfs_free_seqid(data->arg.lock_seqid);
3431 if (data->arg.open_seqid != NULL)
3432 nfs_free_seqid(data->arg.open_seqid);
3427 nfs4_put_lock_state(data->lsp); 3433 nfs4_put_lock_state(data->lsp);
3428 put_nfs_open_context(data->ctx); 3434 put_nfs_open_context(data->ctx);
3429 kfree(data); 3435 kfree(data);
diff --git a/fs/nfs/nfs4renewd.c b/fs/nfs/nfs4renewd.c
index 3ea352d82eba..5e2e4af1a0e6 100644
--- a/fs/nfs/nfs4renewd.c
+++ b/fs/nfs/nfs4renewd.c
@@ -133,9 +133,7 @@ nfs4_renewd_prepare_shutdown(struct nfs_server *server)
133void 133void
134nfs4_kill_renewd(struct nfs_client *clp) 134nfs4_kill_renewd(struct nfs_client *clp)
135{ 135{
136 down_read(&clp->cl_sem);
137 cancel_delayed_work_sync(&clp->cl_renewd); 136 cancel_delayed_work_sync(&clp->cl_renewd);
138 up_read(&clp->cl_sem);
139} 137}
140 138
141/* 139/*
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index ea929207f274..0b0c72a072ff 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1475,7 +1475,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,
1475 error = PTR_ERR(mntroot); 1475 error = PTR_ERR(mntroot);
1476 goto error_splat_super; 1476 goto error_splat_super;
1477 } 1477 }
1478 if (mntroot->d_inode->i_op != server->nfs_client->rpc_ops->dir_inode_ops) { 1478 if (mntroot->d_inode->i_op != NFS_SB(s)->nfs_client->rpc_ops->dir_inode_ops) {
1479 dput(mntroot); 1479 dput(mntroot);
1480 error = -ESTALE; 1480 error = -ESTALE;
1481 goto error_splat_super; 1481 goto error_splat_super;
@@ -1826,6 +1826,11 @@ static int nfs4_xdev_get_sb(struct file_system_type *fs_type, int flags,
1826 error = PTR_ERR(mntroot); 1826 error = PTR_ERR(mntroot);
1827 goto error_splat_super; 1827 goto error_splat_super;
1828 } 1828 }
1829 if (mntroot->d_inode->i_op != NFS_SB(s)->nfs_client->rpc_ops->dir_inode_ops) {
1830 dput(mntroot);
1831 error = -ESTALE;
1832 goto error_splat_super;
1833 }
1829 1834
1830 s->s_flags |= MS_ACTIVE; 1835 s->s_flags |= MS_ACTIVE;
1831 mnt->mnt_sb = s; 1836 mnt->mnt_sb = s;
@@ -1900,6 +1905,11 @@ static int nfs4_referral_get_sb(struct file_system_type *fs_type, int flags,
1900 error = PTR_ERR(mntroot); 1905 error = PTR_ERR(mntroot);
1901 goto error_splat_super; 1906 goto error_splat_super;
1902 } 1907 }
1908 if (mntroot->d_inode->i_op != NFS_SB(s)->nfs_client->rpc_ops->dir_inode_ops) {
1909 dput(mntroot);
1910 error = -ESTALE;
1911 goto error_splat_super;
1912 }
1903 1913
1904 s->s_flags |= MS_ACTIVE; 1914 s->s_flags |= MS_ACTIVE;
1905 mnt->mnt_sb = s; 1915 mnt->mnt_sb = s;
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c
index d30467b47ddd..80fbbfc04290 100644
--- a/kernel/sched_debug.c
+++ b/kernel/sched_debug.c
@@ -31,9 +31,9 @@
31/* 31/*
32 * Ease the printing of nsec fields: 32 * Ease the printing of nsec fields:
33 */ 33 */
34static long long nsec_high(long long nsec) 34static long long nsec_high(unsigned long long nsec)
35{ 35{
36 if (nsec < 0) { 36 if ((long long)nsec < 0) {
37 nsec = -nsec; 37 nsec = -nsec;
38 do_div(nsec, 1000000); 38 do_div(nsec, 1000000);
39 return -nsec; 39 return -nsec;
@@ -43,9 +43,9 @@ static long long nsec_high(long long nsec)
43 return nsec; 43 return nsec;
44} 44}
45 45
46static unsigned long nsec_low(long long nsec) 46static unsigned long nsec_low(unsigned long long nsec)
47{ 47{
48 if (nsec < 0) 48 if ((long long)nsec < 0)
49 nsec = -nsec; 49 nsec = -nsec;
50 50
51 return do_div(nsec, 1000000); 51 return do_div(nsec, 1000000);
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index a6e57d1c2eb6..1f2d85e869c0 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -625,7 +625,7 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
625 err = -EINVAL; 625 err = -EINVAL;
626 gss_auth->mech = gss_mech_get_by_pseudoflavor(flavor); 626 gss_auth->mech = gss_mech_get_by_pseudoflavor(flavor);
627 if (!gss_auth->mech) { 627 if (!gss_auth->mech) {
628 printk(KERN_WARNING "%s: Pseudoflavor %d not found!", 628 printk(KERN_WARNING "%s: Pseudoflavor %d not found!\n",
629 __FUNCTION__, flavor); 629 __FUNCTION__, flavor);
630 goto err_free; 630 goto err_free;
631 } 631 }