Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
254721ff
Commit
254721ff
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.2.3
parent
777720de
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
242 additions
and
132 deletions
+242
-132
Documentation/Configure.help
Documentation/Configure.help
+105
-33
arch/i386/kernel/bios32.c
arch/i386/kernel/bios32.c
+2
-2
arch/i386/kernel/time.c
arch/i386/kernel/time.c
+80
-75
drivers/block/nbd.c
drivers/block/nbd.c
+26
-10
drivers/char/bttv.c
drivers/char/bttv.c
+1
-1
drivers/video/fbcon.c
drivers/video/fbcon.c
+9
-4
fs/proc/array.c
fs/proc/array.c
+6
-3
include/linux/filter.h
include/linux/filter.h
+2
-2
include/linux/nbd.h
include/linux/nbd.h
+10
-1
mm/mmap.c
mm/mmap.c
+1
-1
No files found.
Documentation/Configure.help
View file @
254721ff
...
...
@@ -2080,7 +2080,7 @@ Auto-probe for parallel devices
CONFIG_PNP_PARPORT
Some IEEE-1284 conforming parallel-port devices can identify
themselves when requested. Say Y to enable this feature, or M to
compile it as a module (parport_
ieee1284
.o). If in doubt, say N.
compile it as a module (parport_
probe
.o). If in doubt, say N.
Enable loadable module support
CONFIG_MODULES
...
...
@@ -2716,20 +2716,6 @@ CONFIG_TCP_NAGLE_OFF
enabled
.
Those
programs
that
would
benefit
from
disabling
this
facility
can
do
it
on
a
per
connection
basis
themselves
.
IP
:
Drop
source
routed
frames
CONFIG_IP_NOSR
Usually
,
the
originator
of
an
IP
frame
(
packet
)
specifies
only
the
destination
,
and
the
hosts
along
the
way
do
the
routing
,
i
.
e
.
they
decide
how
to
forward
the
frame
.
However
,
there
is
a
feature
of
the
IP
protocol
that
allows
to
specify
the
full
route
for
a
given
frame
already
at
its
origin
.
A
frame
with
such
a
fully
specified
route
is
called
"source routed"
.
The
question
now
is
whether
we
should
honour
these
route
requests
when
such
frames
arrive
,
or
if
we
should
drop
all
those
frames
instead
.
Honouring
them
can
introduce
security
problems
(
and
is
rarely
a
useful
feature
),
and
hence
it
is
recommended
that
you
say
Y
here
unless
you
really
know
what
you
're
doing.
IP
:
Allow
large
windows
(
not
recommended
if
<
16
MB
of
memory
)
CONFIG_SKB_LARGE
On
high
speed
,
long
distance
networks
the
performance
limit
on
...
...
@@ -4184,6 +4170,17 @@ CONFIG_SCSI_INITIO
say
M
here
and
read
Documentation
/
modules
.
txt
.
The
module
will
be
called
initio
.
o
Initio
91
XXU
(
W
)
SCSI
support
CONFIG_SCSI_INITIO
This
is
support
for
the
Initio
91
XXU
(
W
)
SCSI
host
adapter
.
Please
read
the
SCSI
-
HOWTO
,
available
via
FTP
(
user
:
anonymous
)
at
ftp
://
sunsite
.
unc
.
edu
/
pub
/
Linux
/
docs
/
HOWTO
.
If
you
want
to
compile
this
as
a
module
(
=
code
which
can
be
inserted
in
and
removed
from
the
running
kernel
whenever
you
want
),
say
M
here
and
read
Documentation
/
modules
.
txt
.
The
module
will
be
called
initio
.
o
PAS16
SCSI
support
CONFIG_SCSI_PAS16
This
is
support
for
a
SCSI
host
adapter
.
It
is
explained
in
section
...
...
@@ -4197,6 +4194,17 @@ CONFIG_SCSI_PAS16
The module will be called pas16.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
Initio INI-A100U2W SCSI support
CONFIG_SCSI_INIA100
This is support for the Initio INI-A100U2W SCSI host adapter.
Please read the SCSI-HOWTO, available via FTP (user: anonymous) at
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read Documentation/modules.txt. The module will be
called a100u2w.o
PCI2000 support
CONFIG_SCSI_PCI2000
This is support for the PCI2000I EIDE interface card which acts as a
...
...
@@ -4389,6 +4397,23 @@ CONFIG_SCSI_NCR53C406A
say
M
here
and
read
Documentation
/
modules
.
txt
.
The
module
will
be
called
NCR53c406
.
o
.
Symbios
Logic
sym53c416
support
CONFIG_SCSI_SYM53C416
This
is
support
for
the
sym53c416
SCSI
host
adapter
.
This
is
the
SCSI
adapter
that
comes
with
some
hp
scanners
.
This
driver
requires
that
the
sym53c416
is
configured
first
using
some
sort
of
pnp
configuration
program
(
e
.
g
.
isapnp
)
or
by
a
PnP
aware
BIOS
.
If
you
are
using
isapnp
then
you
need
to
compile
it
as
a
module
and
then
load
it
using
insmod
after
isapnp
has
run
.
The
parameters
of
the
configured
card
(
s
)
should
be
passed
to
the
driver
.
The
format
is
:
insmod
sym53c416
sym53c416
=<
base
>,<
irq
>
[
sym53c416_1
=<
base
>,<
irq
>]
There
is
support
for
up
to
four
adapters
.
If
you
want
to
compile
this
driver
as
a
module
(
=
code
which
can
be
inserted
in
and
removed
from
the
running
kernel
whenever
you
want
),
say
M
here
and
read
Documentation
/
modules
.
txt
.
Tekram
DC390
(
T
)
and
Am53
/
79
C974
(
PCscsi
)
SCSI
support
CONFIG_SCSI_DC390T
This
driver
supports
PCI
SCSI
host
adapters
based
on
the
Am53C974A
...
...
@@ -8914,6 +8939,20 @@ CONFIG_SOUND_OSS
here (the module will be called sound.o) if you haven'
t
found
a
driver
for
your
sound
card
above
,
then
pick
your
driver
from
the
list
below
.
Persistent
DMA
buffers
CONFIG_SOUND_DMAP
Linux
can
often
have
problems
allocating
DMA
buffers
for
ISA
cards
on
machines
with
more
than
16
MB
of
RAM
.
This
is
because
ISA
DMA
buffers
must
exist
below
the
16
MB
boundry
and
it
is
quite
possible
that
we
can
't find a large enough free block in this region after the machine
has been running for any amount of time. If you say Y here the DMA
buffers (64Kb) will be allocated at boot time and kept until the
shutdown. This option is only usefull if you say Y to OSS sound
modules. If you say M to OSS sound modules then you can just pass to
the sound.o module a "dmabuf=1" command-line argument.
Say Y unless you have 16MB or less RAM or a PCI sound card.
Support for Aztech Sound Galaxy (non-PnP) cards
CONFIG_SOUND_SGALAXY
...
...
@@ -10493,6 +10532,44 @@ SF16FMI I/O port (0x284 or 0x384)
CONFIG_RADIO_SF16FMI_PORT
Enter the I/O port of your SF16FMI radio card.
Typhoon Radio
CONFIG_RADIO_TYPHOON
Choose Y here if you have one of these FM radio cards, and then fill
in the port address and the frequency used for muting below.
In order to control your radio card, you will need to use programs
that are compatible with the Video for Linux API. Information on
this API and pointers to "v4l" programs may be found on the WWW at
http://roadrunner.swansea.uk.linux.org/v4l.shtml; to browse the WWW,
you need to have access to a machine on the Internet that has a
program like lynx or netscape.
If you want to compile this driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read Documentation/modules.txt. The module will be
called radio-typhoon.o
Support for /proc/radio-typhoon
CONFIG_RADIO_TYPHOON_PROC_FS
Say Y here if you want the typhoon radio card driver to write
status information (frequency, volume, muted, mute frequency,
base address) to /proc/radio-typhoon. The file can be viewed with
your favorite pager (i.e. use "more /proc/radio-typhoon" or "less
/proc/radio-typhoon" or simply "cat /proc/radio-typhoon").
Typhoon I/O port (0x316 or 0x336)
CONFIG_RADIO_TYPHOON_PORT
Enter the I/O port of your Typhoon or EcoRadio radio card.
Typhoon frequency set when muting the device (kHz)
CONFIG_RADIO_TYPHOON_MUTEFREQ
Enter the frequency used for muting the radio. The device is never
completely silent. If the volume is just turned down, you can still
hear silent voices and music. For that reason, the frequency of the
radio device is set to the frequency you can enter here whenever
the device is muted. There should be no local radio station at that
frequency.
Zoltrix Radio
CONFIG_RADIO_ZOLTRIX
Choose Y here if you have one of these FM radio cards, and then fill
...
...
@@ -10738,24 +10815,10 @@ CONFIG_IRLAN
Documentation
/
modules
.
txt
.
IrLAN
emulates
an
Ethernet
and
makes
it
possible
to
put
up
a
wireless
LAN
using
infrared
beams
.
IrLAN Client Protocol
CONFIG_IRLAN_CLIENT
Say Y here if you want to build support for the IrLAN client
protocol. If you want to compile it as a module, say M here and read
Documentation/modules.txt. The IrLAN client protocol can be used to
talk with infrared access points like the HP NetbeamIR, or the ESI
JetEye NET. You can also connect to another Linux machine running
the IrLAN server protocol for ad-hoc networking!
IrLAN Server Protocol
CONFIG_IRLAN_SERVER
Say Y here if you want to build support for infrared LAN access. If
you want to compile it as a module, say M here and read
Documentation/modules.txt. The IrLAN server protocol makes it
possible to set up a wireless LAN with a machine running the IrLAN
client protocol. Notice that the IrLAN server protocol currently
only emulates an access point and does not implement the ad-hoc
specification of IrLAN, but this will not be noticeable by the user.
The
IrLAN
protocol
can
be
used
to
talk
with
infrared
access
points
like
the
HP
NetbeamIR
,
or
the
ESI
JetEye
NET
.
You
can
also
connect
to
another
Linux
machine
running
the
IrLAN
protocol
for
ac
-
hoc
networking
!
IrOBEX
Protocol
CONFIG_IROBEX
...
...
@@ -10868,6 +10931,15 @@ CONFIG_TEKRAM_DONGLE
used
by
IrTTY
.
To
activate
support
for
Tekram
dongles
you
will
have
to
insert
"irattach -d tekram"
in
the
/
etc
/
irda
/
drivers
script
.
Greenwich
GIrBIL
dongle
CONFIG_GIRBIL_DONGLE
Say
Y
here
if
you
want
to
build
support
for
the
Greenwich
GIrBIL
dongle
.
If
you
want
to
compile
it
as
a
module
,
say
M
here
and
read
Documentation
/
modules
.
txt
.
The
Greenwich
dongle
attaches
to
the
normal
9
-
pin
serial
port
connector
,
and
can
currently
only
be
used
by
IrTTY
.
To
activate
support
for
Greenwich
dongles
you
will
have
to
insert
"irattach -d girbil"
in
the
/
etc
/
irda
/
drivers
script
.
VME
(
Motorola
and
BVM
)
support
CONFIG_VME
Say
Y
here
if
you
want
to
build
a
kernel
for
a
680
x0
based
VME
...
...
arch/i386/kernel/bios32.c
View file @
254721ff
...
...
@@ -875,8 +875,8 @@ static void __init pcibios_fixup_io_addr(struct pci_dev *dev, int idx)
printk
(
"PCI: Unassigned I/O space for %02x:%02x
\n
"
,
bus
,
devfn
);
return
;
}
if
((
dev
->
class
>>
8
)
==
PCI_CLASS_STORAGE_IDE
&&
idx
<
4
||
(
dev
->
class
>>
8
)
==
PCI_CLASS_DISPLAY_VGA
)
{
if
((
(
dev
->
class
>>
8
)
==
PCI_CLASS_STORAGE_IDE
&&
idx
<
4
)
||
(
dev
->
class
>>
8
)
==
PCI_CLASS_DISPLAY_VGA
)
{
/*
* In case the BIOS didn't assign an address 0--3 to an IDE
* controller, we don't try to fix it as it means "use default
...
...
arch/i386/kernel/time.c
View file @
254721ff
...
...
@@ -543,70 +543,72 @@ static struct irqaction irq0 = { timer_interrupt, SA_INTERRUPT, 0, "timer", NUL
* device.
*/
#define CALIBRATE_LATCH (5 * LATCH)
#define CALIBRATE_TIME (5 * 1000020/HZ)
__initfunc
(
static
unsigned
long
calibrate_tsc
(
void
))
{
unsigned
long
retval
;
/* Set the Gate high, disable speaker */
outb
((
inb
(
0x61
)
&
~
0x02
)
|
0x01
,
0x61
);
__asm__
(
/* set the Gate high, program CTC channel 2 for mode 0
* (interrupt on terminal count mode), binary count,
* load 5 * LATCH count, (LSB and MSB)
* to begin countdown, read the TSC and busy wait.
* BTW LATCH is calculated in timex.h from the HZ value
*/
/*
* Now let's take care of CTC channel 2
*
* Set the Gate high, program CTC channel 2 for mode 0,
* (interrupt on terminal count mode), binary count,
* load 5 * LATCH count, (LSB and MSB) to begin countdown.
*/
outb
(
0xb0
,
0x43
);
/* binary, mode 0, LSB/MSB, Ch 2 */
outb
(
CALIBRATE_LATCH
&
0xff
,
0x42
);
/* LSB of count */
outb
(
CALIBRATE_LATCH
>>
8
,
0x42
);
/* MSB of count */
{
unsigned
long
startlow
,
starthigh
;
unsigned
long
endlow
,
endhigh
;
unsigned
long
count
;
__asm__
__volatile__
(
"rdtsc"
:
"=a"
(
startlow
),
"=d"
(
starthigh
));
count
=
0
;
do
{
count
++
;
}
while
((
inb
(
0x61
)
&
0x20
)
==
0
);
__asm__
__volatile__
(
"rdtsc"
:
"=a"
(
endlow
),
"=d"
(
endhigh
));
last_tsc_low
=
endlow
;
/* Error: ECTCNEVERSET */
if
(
count
<=
1
)
goto
bad_ctc
;
/* 64-bit subtract - gcc just messes up with long longs */
__asm__
(
"subl %2,%0
\n\t
"
"sbbl %3,%1"
:
"=a"
(
endlow
),
"=d"
(
endhigh
)
:
"g"
(
startlow
),
"g"
(
starthigh
),
"0"
(
endlow
),
"1"
(
endhigh
));
/* Error: ECPUTOOFAST */
if
(
endhigh
)
goto
bad_ctc
;
/* Error: ECPUTOOSLOW */
if
(
endlow
<=
CALIBRATE_TIME
)
goto
bad_ctc
;
__asm__
(
"divl %2"
:
"=a"
(
endlow
),
"=d"
(
endhigh
)
:
"r"
(
endlow
),
"0"
(
0
),
"1"
(
CALIBRATE_TIME
));
return
endlow
;
}
/* Set the Gate high, disable speaker */
"inb $0x61, %%al
\n\t
"
/* Read port */
"andb $0xfd, %%al
\n\t
"
/* Turn off speaker Data */
"orb $0x01, %%al
\n\t
"
/* Set Gate high */
"outb %%al, $0x61
\n\t
"
/* Write port */
/* Now let's take care of CTC channel 2 */
"movb $0xb0, %%al
\n\t
"
/* binary, mode 0, LSB/MSB, ch 2*/
"outb %%al, $0x43
\n\t
"
/* Write to CTC command port */
"movl %1, %%eax
\n\t
"
"outb %%al, $0x42
\n\t
"
/* LSB of count */
"shrl $8, %%eax
\n\t
"
"outb %%al, $0x42
\n\t
"
/* MSB of count */
/* Read the TSC; counting has just started */
"rdtsc
\n\t
"
/* Move the value for safe-keeping. */
"movl %%eax, %%ebx
\n\t
"
"movl %%edx, %%ecx
\n\t
"
/* Busy wait. Only 50 ms wasted at boot time. */
"0: inb $0x61, %%al
\n\t
"
/* Read Speaker Output Port */
"testb $0x20, %%al
\n\t
"
/* Check CTC channel 2 output (bit 5) */
"jz 0b
\n\t
"
/* And read the TSC. 5 jiffies (50.00077ms) have elapsed. */
"rdtsc
\n\t
"
/* Great. So far so good. Store last TSC reading in
* last_tsc_low (only 32 lsb bits needed) */
"movl %%eax, last_tsc_low
\n\t
"
/* And now calculate the difference between the readings. */
"subl %%ebx, %%eax
\n\t
"
"sbbl %%ecx, %%edx
\n\t
"
/* 64-bit subtract */
/* but probably edx = 0 at this point (see below). */
/* Now we have 5 * (TSC counts per jiffy) in eax. We want
* to calculate TSC->microsecond conversion factor. */
/* Note that edx (high 32-bits of difference) will now be
* zero iff CPU clock speed is less than 85 GHz. Moore's
* law says that this is likely to be true for the next
* 12 years or so. You will have to change this code to
* do a real 64-by-64 divide before that time's up. */
"movl %%eax, %%ecx
\n\t
"
"xorl %%eax, %%eax
\n\t
"
"movl %2, %%edx
\n\t
"
"divl %%ecx
\n\t
"
/* eax= 2^32 / (1 * TSC counts per microsecond) */
/* Return eax for the use of fast_gettimeoffset */
"movl %%eax, %0
\n\t
"
:
"=r"
(
retval
)
:
"r"
(
5
*
LATCH
),
"r"
(
5
*
1000020
/
HZ
)
:
/* we clobber: */
"ax"
,
"bx"
,
"cx"
,
"dx"
,
"cc"
,
"memory"
);
return
retval
;
/*
* The CTC wasn't reliable: we got a hit on the very first read,
* or the CPU was so fast/slow that the quotient wouldn't fit in
* 32 bits..
*/
bad_ctc:
return
0
;
}
__initfunc
(
void
time_init
(
void
))
...
...
@@ -642,23 +644,26 @@ __initfunc(void time_init(void))
dodgy_tsc
();
if
(
boot_cpu_data
.
x86_capability
&
X86_FEATURE_TSC
)
{
unsigned
long
tsc_quotient
=
calibrate_tsc
();
if
(
tsc_quotient
)
{
fast_gettimeoffset_quotient
=
tsc_quotient
;
use_tsc
=
1
;
#ifndef do_gettimeoffset
do_gettimeoffset
=
do_fast_gettimeoffset
;
do_gettimeoffset
=
do_fast_gettimeoffset
;
#endif
do_get_fast_time
=
do_gettimeofday
;
use_tsc
=
1
;
fast_gettimeoffset_quotient
=
calibrate_tsc
();
/* report CPU clock rate in Hz.
* The formula is (10^6 * 2^32) / (2^32 * 1 / (clocks/us)) =
* clock/second. Our precision is about 100 ppm.
*/
{
unsigned
long
eax
=
0
,
edx
=
1000000
;
__asm__
(
"divl %2"
:
"=a"
(
cpu_hz
),
"=d"
(
edx
)
:
"r"
(
fast_gettimeoffset_quotient
),
"0"
(
eax
),
"1"
(
edx
));
printk
(
"Detected %ld Hz processor.
\n
"
,
cpu_hz
);
do_get_fast_time
=
do_gettimeofday
;
/* report CPU clock rate in Hz.
* The formula is (10^6 * 2^32) / (2^32 * 1 / (clocks/us)) =
* clock/second. Our precision is about 100 ppm.
*/
{
unsigned
long
eax
=
0
,
edx
=
1000000
;
__asm__
(
"divl %2"
:
"=a"
(
cpu_hz
),
"=d"
(
edx
)
:
"r"
(
tsc_quotient
),
"0"
(
eax
),
"1"
(
edx
));
printk
(
"Detected %ld Hz processor.
\n
"
,
cpu_hz
);
}
}
}
...
...
drivers/block/nbd.c
View file @
254721ff
...
...
@@ -17,6 +17,7 @@
* 97-4-11 Making protocol independent of endianity etc.
* 97-9-13 Cosmetic changes
* 98-5-13 Attempt to make 64-bit-clean on 64-bit machines
* 99-1-11 Attempt to make 64-bit-clean on 32-bit machines <ankry@mif.pg.gda.pl>
*
* possible FIXME: make set_sock / set_blksize / set_size / do_it one syscall
* why not: would need verify_area and friends, would share yet another
...
...
@@ -45,8 +46,9 @@
#define LO_MAGIC 0x68797548
static
int
nbd_blksizes
[
MAX_NBD
];
static
int
nbd_blksize_bits
[
MAX_NBD
];
static
int
nbd_sizes
[
MAX_NBD
];
static
int
nbd_bytesizes
[
MAX_NBD
];
static
u64
nbd_bytesizes
[
MAX_NBD
];
static
struct
nbd_device
nbd_dev
[
MAX_NBD
];
...
...
@@ -149,7 +151,7 @@ void nbd_send_req(struct socket *sock, struct request *req)
DEBUG
(
"NBD: sending control, "
);
request
.
magic
=
htonl
(
NBD_REQUEST_MAGIC
);
request
.
type
=
htonl
(
req
->
cmd
);
request
.
from
=
cpu_to_be64
(
(
u64
)
req
->
sector
*
(
u64
)
512
);
request
.
from
=
cpu_to_be64
(
(
u64
)
req
->
sector
<<
9
);
request
.
len
=
htonl
(
req
->
current_nr_sectors
<<
9
);
memcpy
(
request
.
handle
,
&
req
,
sizeof
(
req
));
...
...
@@ -340,7 +342,7 @@ static int nbd_ioctl(struct inode *inode, struct file *file,
unsigned
int
cmd
,
unsigned
long
arg
)
{
struct
nbd_device
*
lo
;
int
dev
,
error
;
int
dev
,
error
,
temp
;
/* Anyone capable of this syscall can do *real bad* things */
...
...
@@ -355,6 +357,7 @@ static int nbd_ioctl(struct inode *inode, struct file *file,
lo
=
&
nbd_dev
[
dev
];
switch
(
cmd
)
{
case
NBD_CLEAR_SOCK
:
nbd_clear_que
(
lo
);
if
(
lo
->
head
||
lo
->
tail
)
{
printk
(
KERN_ERR
"nbd: Some requests are in progress -> can not turn off.
\n
"
);
return
-
EBUSY
;
...
...
@@ -380,14 +383,25 @@ static int nbd_ioctl(struct inode *inode, struct file *file,
}
return
error
;
case
NBD_SET_BLKSIZE
:
if
((
arg
&
511
)
||
(
arg
>
PAGE_SIZE
))
if
((
arg
&
(
arg
-
1
))
||
(
arg
<
512
)
||
(
arg
>
PAGE_SIZE
))
return
-
EINVAL
;
nbd_blksizes
[
dev
]
=
arg
;
nbd_sizes
[
dev
]
=
arg
/
nbd_blksizes
[
dev
];
temp
=
arg
>>
9
;
nbd_blksize_bits
[
dev
]
=
9
;
while
(
temp
>
1
)
{
nbd_blksize_bits
[
dev
]
++
;
temp
>>=
1
;
}
nbd_sizes
[
dev
]
=
nbd_bytesizes
[
dev
]
>>
nbd_blksize_bits
[
dev
];
nbd_bytesizes
[
dev
]
=
nbd_sizes
[
dev
]
<<
nbd_blksize_bits
[
dev
];
return
0
;
case
NBD_SET_SIZE
:
nbd_bytesizes
[
dev
]
=
arg
;
nbd_sizes
[
dev
]
=
arg
/
nbd_blksizes
[
dev
];
nbd_sizes
[
dev
]
=
arg
>>
nbd_blksize_bits
[
dev
];
nbd_bytesizes
[
dev
]
=
nbd_sizes
[
dev
]
<<
nbd_blksize_bits
[
dev
];
return
0
;
case
NBD_SET_SIZE_BLOCKS
:
nbd_sizes
[
dev
]
=
arg
;
nbd_bytesizes
[
dev
]
=
arg
<<
nbd_blksize_bits
[
dev
];
return
0
;
case
NBD_DO_IT
:
if
(
!
lo
->
file
)
...
...
@@ -404,7 +418,7 @@ static int nbd_ioctl(struct inode *inode, struct file *file,
return
0
;
#endif
case
BLKGETSIZE
:
return
put_user
(
nbd_bytesizes
[
dev
]
/
512
,
(
long
*
)
arg
);
return
put_user
(
nbd_bytesizes
[
dev
]
<<
9
,
(
long
*
)
arg
);
}
return
-
EINVAL
;
}
...
...
@@ -420,6 +434,7 @@ static int nbd_release(struct inode *inode, struct file *file)
if
(
dev
>=
MAX_NBD
)
return
-
ENODEV
;
fsync_dev
(
inode
->
i_rdev
);
invalidate_buffers
(
inode
->
i_rdev
);
lo
=
&
nbd_dev
[
dev
];
if
(
lo
->
refcnt
<=
0
)
printk
(
KERN_ALERT
"nbd_release: refcount(%d) <= 0
\n
"
,
lo
->
refcnt
);
...
...
@@ -478,8 +493,9 @@ int nbd_init(void)
nbd_dev
[
i
].
magic
=
LO_MAGIC
;
nbd_dev
[
i
].
flags
=
0
;
nbd_blksizes
[
i
]
=
1024
;
nbd_bytesizes
[
i
]
=
0x7fffffff
;
nbd_sizes
[
i
]
=
nbd_bytesizes
[
i
]
/
nbd_blksizes
[
i
];
nbd_blksize_bits
[
i
]
=
10
;
nbd_bytesizes
[
i
]
=
0x7ffffc00
;
/* 2GB */
nbd_sizes
[
i
]
=
nbd_bytesizes
[
i
]
>>
nbd_blksize_bits
[
i
];
}
return
0
;
}
...
...
drivers/char/bttv.c
View file @
254721ff
...
...
@@ -1558,7 +1558,6 @@ static int bttv_open(struct video_device *dev, int flags)
static
void
bttv_close
(
struct
video_device
*
dev
)
{
struct
bttv
*
btv
=
(
struct
bttv
*
)
dev
;
unsigned
long
f
;
btv
->
user
--
;
audio
(
btv
,
AUDIO_INTERN
);
...
...
@@ -1580,6 +1579,7 @@ static void bttv_close(struct video_device *dev)
* which is more than sufficient to be sure.
*/
current
->
state
=
TASK_UNINTERRUPTIBLE
;
schedule_timeout
(
HZ
/
10
);
/* Wait 1/10th of a second */
/*
...
...
drivers/video/fbcon.c
View file @
254721ff
...
...
@@ -1317,10 +1317,19 @@ static int fbcon_switch(struct vc_data *conp)
struct
fb_info
*
info
=
p
->
fb_info
;
if
(
softback_top
)
{
int
l
=
fbcon_softback_size
/
conp
->
vc_size_row
;
if
(
softback_lines
)
fbcon_set_origin
(
conp
);
softback_top
=
softback_curr
=
softback_in
=
softback_buf
;
softback_lines
=
0
;
if
(
l
>
5
)
softback_end
=
softback_buf
+
l
*
conp
->
vc_size_row
;
else
{
/* Smaller scrollback makes no sense, and 0 would screw
the operation totally */
softback_top
=
0
;
}
}
if
(
logo_shown
>=
0
)
{
struct
vc_data
*
conp2
=
vc_cons
[
logo_shown
].
d
;
...
...
@@ -1620,9 +1629,6 @@ static inline int fbcon_set_font(int unit, struct console_font_op *op)
int
h
=
op
->
height
;
int
size
=
h
;
int
i
,
k
;
#ifndef CONFIG_FBCON_FONTWIDTH8_ONLY
int
j
;
#endif
u8
*
new_data
,
*
data
=
op
->
data
,
*
p
;
#ifdef CONFIG_FBCON_FONTWIDTH8_ONLY
...
...
@@ -1878,7 +1884,6 @@ static int fbcon_scrolldelta(struct vc_data *conp, int lines)
q
-=
conp
->
vc_size_row
;
scr_memcpyw
((
u16
*
)
q
,
(
u16
*
)
p
,
conp
->
vc_size_row
);
}
softback_lines
-=
i
;
softback_in
=
p
;
update_region
(
unit
,
conp
->
vc_origin
,
logo_lines
*
conp
->
vc_cols
);
}
...
...
fs/proc/array.c
View file @
254721ff
...
...
@@ -1343,6 +1343,7 @@ static int process_unauthorized(int type, int pid)
{
struct
task_struct
*
p
;
uid_t
euid
=
0
;
/* Save the euid keep the lock short */
int
ok
=
0
;
read_lock
(
&
tasklist_lock
);
...
...
@@ -1352,9 +1353,11 @@ static int process_unauthorized(int type, int pid)
*/
p
=
find_task_by_pid
(
pid
);
if
(
p
)
{
if
(
p
)
{
euid
=
p
->
euid
;
ok
=
p
->
dumpable
;
if
(
!
cap_issubset
(
p
->
cap_permitted
,
current
->
cap_permitted
))
ok
=
0
;
if
(
!
p
->
mm
)
/* Scooby scooby doo where are you ? */
p
=
NULL
;
}
...
...
@@ -1374,7 +1377,7 @@ static int process_unauthorized(int type, int pid)
case
PROC_PID_CPU
:
return
0
;
}
if
(
capable
(
CAP_DAC_OVERRIDE
)
||
current
->
fsuid
==
euid
)
if
(
capable
(
CAP_DAC_OVERRIDE
)
||
(
current
->
fsuid
==
euid
&&
ok
)
)
return
0
;
return
1
;
}
...
...
include/linux/filter.h
View file @
254721ff
...
...
@@ -26,8 +26,8 @@ struct sock_filter /* Filter block */
struct
sock_fprog
/* Required for SO_ATTACH_FILTER. */
{
unsigned
int
len
;
/* Number of filter blocks */
struct
sock_filter
*
filter
;
unsigned
short
len
;
/* Number of filter blocks */
struct
sock_filter
*
filter
;
};
#ifdef __KERNEL__
...
...
include/linux/nbd.h
View file @
254721ff
...
...
@@ -8,6 +8,7 @@
#define NBD_CLEAR_SOCK _IO( 0xab, 4 )
#define NBD_CLEAR_QUE _IO( 0xab, 5 )
#define NBD_PRINT_DEBUG _IO( 0xab, 6 )
#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 )
#ifdef MAJOR_NR
...
...
@@ -60,13 +61,21 @@ struct nbd_device {
#define NBD_REPLY_MAGIC 0x67446698
/* Do *not* use magics: 0x12560953 0x96744668. */
/*
* This is packet used for communication between client and
* server. All data are in network byte order.
*/
struct
nbd_request
{
u32
magic
;
u32
type
;
/* == READ || == WRITE */
char
handle
[
8
];
u64
from
;
u32
len
;
};
}
#ifdef __GNUC__
__attribute__
((
packed
))
#endif
;
struct
nbd_reply
{
u32
magic
;
...
...
mm/mmap.c
View file @
254721ff
...
...
@@ -607,7 +607,7 @@ int do_munmap(unsigned long addr, size_t len)
return
-
EINVAL
;
if
((
len
=
PAGE_ALIGN
(
len
))
==
0
)
return
0
;
return
-
EINVAL
;
/* Check if this memory area is ok - put it on the temporary
* list if so.. The checks here are pretty simple --
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment