Commit ca844c33 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://are.twiddle.net/axp-2.6/

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents a78e510f 2ed33b6b
......@@ -472,10 +472,14 @@ static long copy_siginfo_to_user32(compat_siginfo_t __user *d, siginfo_t *s)
&d->si_addr);
break;
case __SI_POLL >> 16:
case __SI_TIMER >> 16:
err |= __put_user(s->si_band, &d->si_band);
err |= __put_user(s->si_fd, &d->si_fd);
break;
case __SI_TIMER >> 16:
err |= __put_user(s->si_tid, &d->si_tid);
err |= __put_user(s->si_overrun, &d->si_overrun);
err |= __put_user((u32)(u64)s->si_ptr, &d->si_ptr);
break;
case __SI_RT >> 16: /* This is not generated by the kernel as of now. */
case __SI_MESGQ >> 16:
err |= __put_user(s->si_int, &d->si_int);
......
......@@ -463,7 +463,8 @@ static void locks_insert_block(struct file_lock *blocker,
}
list_add_tail(&waiter->fl_block, &blocker->fl_block);
waiter->fl_next = blocker;
list_add(&waiter->fl_link, &blocked_list);
if (IS_POSIX(blocker))
list_add(&waiter->fl_link, &blocked_list);
}
/* Wake up processes blocked waiting for blocker.
......
......@@ -2076,6 +2076,8 @@ smb_proc_readdir_short(struct file *filp, void *dirent, filldir_t filldir,
void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
{
u64 size, disk_bytes;
/* FIXME: verify nls support. all is sent as utf8? */
fattr->f_unix = 1;
......@@ -2093,8 +2095,19 @@ void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
/* 84 L permissions */
/* 92 L link count */
fattr->f_size = LVAL(p, 0);
fattr->f_blocks = LVAL(p, 8);
size = LVAL(p, 0);
disk_bytes = LVAL(p, 8);
/*
* Some samba versions round up on-disk byte usage
* to 1MB boundaries, making it useless. When seeing
* that, use the size instead.
*/
if (!(disk_bytes & 0xfffff))
disk_bytes = size+511;
fattr->f_size = size;
fattr->f_blocks = disk_bytes >> 9;
fattr->f_ctime = smb_ntutc2unixutc(LVAL(p, 16));
fattr->f_atime = smb_ntutc2unixutc(LVAL(p, 24));
fattr->f_mtime = smb_ntutc2unixutc(LVAL(p, 32));
......
......@@ -32,8 +32,10 @@ typedef struct compat_siginfo {
/* POSIX.1b timers */
struct {
unsigned int _timer1;
unsigned int _timer2;
timer_t _tid; /* timer id */
int _overrun; /* overrun count */
compat_sigval_t _sigval; /* same as below */
int _sys_private; /* not to be passed to user */
} _timer;
/* POSIX.1b signals */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment