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) ...@@ -472,10 +472,14 @@ static long copy_siginfo_to_user32(compat_siginfo_t __user *d, siginfo_t *s)
&d->si_addr); &d->si_addr);
break; break;
case __SI_POLL >> 16: case __SI_POLL >> 16:
case __SI_TIMER >> 16:
err |= __put_user(s->si_band, &d->si_band); err |= __put_user(s->si_band, &d->si_band);
err |= __put_user(s->si_fd, &d->si_fd); err |= __put_user(s->si_fd, &d->si_fd);
break; 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_RT >> 16: /* This is not generated by the kernel as of now. */
case __SI_MESGQ >> 16: case __SI_MESGQ >> 16:
err |= __put_user(s->si_int, &d->si_int); err |= __put_user(s->si_int, &d->si_int);
......
...@@ -463,6 +463,7 @@ static void locks_insert_block(struct file_lock *blocker, ...@@ -463,6 +463,7 @@ static void locks_insert_block(struct file_lock *blocker,
} }
list_add_tail(&waiter->fl_block, &blocker->fl_block); list_add_tail(&waiter->fl_block, &blocker->fl_block);
waiter->fl_next = blocker; waiter->fl_next = blocker;
if (IS_POSIX(blocker))
list_add(&waiter->fl_link, &blocked_list); list_add(&waiter->fl_link, &blocked_list);
} }
......
...@@ -2076,6 +2076,8 @@ smb_proc_readdir_short(struct file *filp, void *dirent, filldir_t filldir, ...@@ -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) void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
{ {
u64 size, disk_bytes;
/* FIXME: verify nls support. all is sent as utf8? */ /* FIXME: verify nls support. all is sent as utf8? */
fattr->f_unix = 1; fattr->f_unix = 1;
...@@ -2093,8 +2095,19 @@ void smb_decode_unix_basic(struct smb_fattr *fattr, char *p) ...@@ -2093,8 +2095,19 @@ void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
/* 84 L permissions */ /* 84 L permissions */
/* 92 L link count */ /* 92 L link count */
fattr->f_size = LVAL(p, 0); size = LVAL(p, 0);
fattr->f_blocks = LVAL(p, 8); 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_ctime = smb_ntutc2unixutc(LVAL(p, 16));
fattr->f_atime = smb_ntutc2unixutc(LVAL(p, 24)); fattr->f_atime = smb_ntutc2unixutc(LVAL(p, 24));
fattr->f_mtime = smb_ntutc2unixutc(LVAL(p, 32)); fattr->f_mtime = smb_ntutc2unixutc(LVAL(p, 32));
......
...@@ -32,8 +32,10 @@ typedef struct compat_siginfo { ...@@ -32,8 +32,10 @@ typedef struct compat_siginfo {
/* POSIX.1b timers */ /* POSIX.1b timers */
struct { struct {
unsigned int _timer1; timer_t _tid; /* timer id */
unsigned int _timer2; int _overrun; /* overrun count */
compat_sigval_t _sigval; /* same as below */
int _sys_private; /* not to be passed to user */
} _timer; } _timer;
/* POSIX.1b signals */ /* 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