On Fri, Mar 11, 2016 at 01:41:40PM -0800, Kroah-Hartman wrote:
On Tue, Feb 23, 2016 at 11:45:18PM -0500, YU Bo wrote:
Fix comments to use trailing */ on separate lines.
Signed-off-by: YU BO
You sent me 2 patches that did different things yet had the same
subject line :(
Please fix up and re
On Fri, Mar 11, 2016 at 10:25:32PM -0800, Greg Kroah-Hartman wrote:
> On Fri, Mar 11, 2016 at 10:24:00PM -0800, Greg Kroah-Hartman wrote:
> > On Sat, Mar 12, 2016 at 01:39:01AM +, Dilger, Andreas wrote:
> > > On 2016/03/11, 18:29, "lustre-devel on behalf of James Simmons"
> > > > > jsimm...@in
On Fri, Mar 11, 2016 at 10:24:00PM -0800, Greg Kroah-Hartman wrote:
> On Sat, Mar 12, 2016 at 01:39:01AM +, Dilger, Andreas wrote:
> > On 2016/03/11, 18:29, "lustre-devel on behalf of James Simmons"
> > > jsimm...@infradead.org> wrote:
> >
> > >Apply a consistent style for comments in the lne
On Sat, Mar 12, 2016 at 01:39:01AM +, Dilger, Andreas wrote:
> On 2016/03/11, 18:29, "lustre-devel on behalf of James Simmons"
> jsimm...@infradead.org> wrote:
>
> >Apply a consistent style for comments in the lnet selftest
> >code.
> >
> >Signed-off-by: James Simmons
> >---
> > drivers/stag
On Sat, Mar 12, 2016 at 10:06:40AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
> staging-testing
> head: 1a2fcc93023ea52fd25995d04c83a2b72eb9e46b
> commit: 1d404f3b886e9b8c7cba7fc848207b0223ec1d51 [1514/1572] Staging: fsl-mc:
> Re
On Sat, Mar 12, 2016 at 10:32:49AM +0530, Neha Rani wrote:
> But it was warned by checkpatch.pl and after modifying, no warning. How can it
> be wrong?
I'll turn it around and ask you how do you know it is correct? :)
hint, it isn't, read Documentation/CodingStyle please.
thanks,
greg k-h
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
staging-testing
head: 1a2fcc93023ea52fd25995d04c83a2b72eb9e46b
commit: 1d404f3b886e9b8c7cba7fc848207b0223ec1d51 [1514/1572] Staging: fsl-mc:
Replace pr_debug with dev_dbg
config: arm64-allyesconfig (attached as .config)
On 2016/03/11, 18:29, "lustre-devel on behalf of James Simmons"
wrote:
>Apply a consistent style for comments in the lnet selftest
>code.
>
>Signed-off-by: James Simmons
>---
> drivers/staging/lustre/lnet/selftest/brw_test.c |8 ++--
> drivers/staging/lustre/lnet/selftest/conctl.c| 50
Remove any extra spacing for the lines of code setting variables to
some value.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c | 40 ++--
drivers/staging/lustre/lnet/selftest/conrpc.c| 68 ++--
drivers/staging/lustre/lnet/selftes
This patch is a result of a filter applied to the lnet selftest
code to remove the last bits of hidden white spaces.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c |6 +-
drivers/staging/lustre/lnet/selftest/conctl.c| 10 +-
drivers/staging/lustre/lne
Apply a consistent style for comments in the lnet selftest
code.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c |8 ++--
drivers/staging/lustre/lnet/selftest/conctl.c| 50 +++---
drivers/staging/lustre/lnet/selftest/conrpc.c| 23
Remove any extra spacing as reported by checkpatch.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c |6 +++---
drivers/staging/lustre/lnet/selftest/console.c |6 +++---
drivers/staging/lustre/lnet/selftest/selftest.h |2 +-
drivers/staging/lustre/lne
From: Isaac Huang
It should not be counted as errors if a test RPC
has been stopped due to administrative actions,
e.g. lst end_session from the remote test console.
Signed-off-by: Isaac Huang
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4181
Reviewed-on: http://review.whamcloud.com/1327
The error value returned will be -ETIMEDOUT not ETIMEDOUT. This fixes
a typo that prevents us from handling the error case.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/conrpc.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/staging/lus
Some aligment issues were not caught by checkpatch. We address them
here. Some of the alignment issues caused greater than 80 character
checkpatch issues. Some changes were done to just make the code more
readable and to match our production code.
Signed-off-by: James Simmons
---
drivers/staging
Remove any extra spacing such as "int rc" to "int rc" to match
the proper kernel style
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c | 28
drivers/staging/lustre/lnet/selftest/conctl.c| 36 ++--
drivers/staging/lustre
No reason to have returns at end of void function.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/brw_test.c |9 +++--
drivers/staging/lustre/lnet/selftest/conrpc.c|6 --
drivers/staging/lustre/lnet/selftest/framework.c | 14 --
drivers/s
With lnet selftest nearly in sync with the OpenSFS code base it
was time to do a audit to see if anything was missed. One patch
was missed a few errors unique to upstream needed to be addressed.
Besides adding in fixes it was time to do more kernel style
cleanups. In the process several more checkp
The minimum number reserve buffer for lnet selftest load test is two
not one.
Signed-off-by: James Simmons
---
drivers/staging/lustre/lnet/selftest/framework.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/staging/lustre/lnet/selftest/framework.c
b/drivers/st
Hello,
Greg KH, on Fri 11 Mar 2016 14:32:52 -0800, wrote:
> On Thu, Mar 10, 2016 at 08:21:35PM +, Okash Khawaja wrote:
> > Compiling speakup driver with sparse produces following warning:
> >
> > drivers/staging/speakup/serialio.c:22:9: warning: incorrect type in
> > initializer (different ba
On Thu, Mar 10, 2016 at 08:21:35PM +, Okash Khawaja wrote:
> Compiling speakup driver with sparse produces following warning:
>
> drivers/staging/speakup/serialio.c:22:9: warning: incorrect type in
> initializer (different base types)
> drivers/staging/speakup/serialio.c:22:9:expected unsi
The current code attempts assignment of -1 to an unsigned type. Note that
in a downstream function ion_page_pool_shrink this mask is only ever
evaluated against __GFP_HIGHMEM
(drivers/staging/android/ion/ion_page_pool.c, line 125).
Signed-off-by: Derek Yerger
Reviewed-by: Laura Abbott
---
drive
On Fri, Mar 11, 2016 at 04:49:14PM -0500, David Kershner wrote:
> This patchset cleans up the gotos found in visorbus_main.c
>
> v2 changes:
> - Added patch from Tim Sell that remove sysfs devmajorminor, which allowed
>us to remove two different patches from original patchset since the
>
Hi David,
[auto build test ERROR on staging/staging-testing]
[also build test ERROR on next-20160311]
[cannot apply to v4.5-rc7]
[if your patch is applied to the wrong git tree, please drop us a note to help
improving the system]
url:
https://github.com/0day-ci/linux/commits/David-Kershner
Rename it to what it does instead of the default ambiguous
cleanup.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 8
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/unisys/visorbus/visorchips
Change the goto label "cleanup" to something more useful like
out_respond.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/unisys/visorbus/visorch
This patch series clean up the gotos in visorbus/visorchipset.c
v2 changes:
- added patch cleanup goto in setup_crash_device_work_queue
- added comment body to controlvm_payload_info patch
- added comment body to parser_init_byte_stream patch
David Kershner (7):
staging: unisys: visorbus: cl
Cleaned up bus_epilogs vague gotos and in the process discovered
some error paths that could unlock a non locked semaphore.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 18 --
1 file changed, 12 insertions(+), 6 d
If visorbus has registered yet just reschedule and exit. The rest of
the function doesn't need to reschedule so just move it up to the
initial check.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 14 +-
1 file changed,
Get rid of the gotos in initialize_controlvm_payload_info. The check in
the error path if payload was valid was never called so get rid of that
as well.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 30 --
Don't use the abmiguous cleanup, make it more meaningful.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 12 ++--
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/unisys/visorbus/visorchipset.c
Clean up the goto in parser_init_byte_stream and make the goto section
the error case.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorchipset.c | 39 +-
1 file changed, 14 insertions(+), 25 deletions(-)
diff --git a/dr
On Tue, Mar 08, 2016 at 03:18:59PM +0100, Michal Hocko wrote:
> On Tue 08-03-16 20:01:32, Tetsuo Handa wrote:
> > Currently, lowmemorykiller (LMK) is using TIF_MEMDIE for two purposes.
> > One is to remember processes killed by LMK, and the other is to
> > accelerate termination of processes killed
On Thu, Mar 03, 2016 at 07:42:43PM -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan
>
> Burn the old opcode to avoid any potential old userspace running the old
> API to get weird errors. Changing the opcodes will make them fail right
> away.
>
> This is just a precaution, there no upstream
On Fri, Mar 04, 2016 at 05:40:29PM +0100, Daniel Vetter wrote:
> On Thu, Mar 03, 2016 at 08:17:14AM -0800, Greg Kroah-Hartman wrote:
> > On Thu, Mar 03, 2016 at 11:37:17AM -0300, Gustavo Padovan wrote:
> > > From: Gustavo Padovan
> > >
> > > Play safe and add flags member to all structs. So we do
On Wed, Mar 09, 2016 at 01:55:01AM +0530, Saiyam Doshi wrote:
> On Sun, Mar 06, 2016 at 05:21:08PM -0800, Greg KH wrote:
> > You need to do only one thing per patch, please split this up into
> > multiple patches.
>
> Created two separate patches out of it having same logical change in each.
You
On Sun, Mar 06, 2016 at 11:19:23AM -0500, Derek Yerger wrote:
> From drivers/staging/android TODO file - sparse errors.
>
> The current code attempts assignment of -1 to an unsigned type. Note that in a
> downstream function ion_page_pool_shrink this mask is only ever evaluated
> against __GFP_HIG
On Fri, Mar 04, 2016 at 08:49:54PM +0100, Ben Marsh wrote:
> This patch removes an unnecessary cast on a void pointer in xlr_net.c
>
> Signed-off-by: Ben Marsh
> ---
> drivers/staging/netlogic/xlr_net.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/net
Away is ambiguous when specifying error vs success. Make return labels
more meaningful by marking them as error paths.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorbus_main.c | 16
1 file changed, 8 insertions(+), 8 deletion
This patchset cleans up the gotos found in visorbus_main.c
v2 changes:
- Added patch from Tim Sell that remove sysfs devmajorminor, which allowed
us to remove two different patches from original patchset since the
functions they patch no longer exist.
- Reworked the function visordriver_p
From: Tim Sell
The sysfs attribute directory at:
/sys/bus/visorbus/devices/vbus:dev/devmajorminor/*
or
/sys/devices/visorbus/vbus:dev/devmajorminor/*
previously provided a location where a visorbus function driver could
publish information (for usermode use) about possibly-multiple ma
Fixup the visordriver_probe function. Rearrange the function to avoid
needing gotos and removed unnecessary wmb().
Signed-off-by: David Kershner
---
drivers/staging/unisys/visorbus/visorbus_main.c | 32 ++---
1 file changed, 12 insertions(+), 20 deletions(-)
diff --git a/dri
This patch fixes the gotos in visorbus_init
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorbus_main.c | 24 +++-
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/staging/unisys/visorbus/visorbus_main.
Gotos in visorbus_match are not needed.
Signed-off-by: David Kershner
Signed-off-by: Timothy Sell
---
drivers/staging/unisys/visorbus/visorbus_main.c | 24 ++--
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c
b
On Sun, Mar 06, 2016 at 12:55:31AM +0530, Shraddha Barke wrote:
> Remove support for gdm72xx driver from the kernel since Wimax is dead.
> [1] http://www.networkworld.com/article/2220370/4g/wimax-is-dead.html
> [2]
> http://www.androidcentral.com/sprint-confirms-wimax-shutdown-november-6-2015
>
>
On Tue, Feb 23, 2016 at 11:45:18PM -0500, YU Bo wrote:
> Fix comments to use trailing */ on separate lines.
>
> Signed-off-by: YU BO
You sent me 2 patches that did different things yet had the same
subject line :(
Please fix up and resend.
thanks,
greg k-h
On Fri, Mar 11, 2016 at 01:13:58PM -0800, Kathryn Hampton wrote:
Please turn off html email, as the mail servers will reject it.
> Hi, I'm still working through the steps to get this right. The first mail was
> my first ever attempt at sending to this list, doing a patch, getting mail
> working o
On Mon, Mar 07, 2016 at 04:55:38PM +0900, Daeseok Youn wrote:
> the tty_alloc_driver() can allocate memory for ttys and termios.
> And also it can release allocated memory easly with using
> put_tty_driver().
Also needs to be rebased and resent.
___
deve
On Mon, Mar 07, 2016 at 04:52:47PM +0900, Daeseok Youn wrote:
> For using tty_alloc_driver, SerialDriver has to be pointer type.
> It also has checkpatch.pl warning about Camelcase, so
> SerialDriver is changed to serial_driver.
Please only fix one thing per patch. This should be two different
pa
On Thu, Mar 10, 2016 at 12:42:29PM +0530, Neha Rani wrote:
> This is a patch in nvec.c file that fixes a multiline comment found by
> checkpatch.pl tool
>
> Signed-off-by: Neha Rani
> ---
> drivers/staging/nvec/nvec.c | 6 --
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git
On Mon, Feb 22, 2016 at 01:52:48AM +0100, Yorick Rommers wrote:
> This patch fixes a comparison warning found by checkpatch.pl.
> Signed-off-by: Yorick Rommers
> ---
> drivers/staging/rtl8188eu/core/rtw_iol.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Patch did not apply to my t
Am 10.03.2016 um 17:41 schrieb i...@linux-pingi.de:
> Am 10.03.2016 um 13:58 schrieb Paul Bolle:
>> On do, 2016-03-10 at 11:53 +0100, i...@linux-pingi.de wrote:
>>> mISDN with CAPI support works just fine with pppd and pppdcapiplugin
>>> and the CAPI works for all mISDN HW.
>>
>> In the mainline tr
This is a patch to XGI_main_26.c that removes useless blanklines as
flagged by checkpatch.pl
Signed-off-by: Ben Marsh
---
drivers/staging/xgifb/XGI_main_26.c | 4
1 file changed, 4 deletions(-)
diff --git a/drivers/staging/xgifb/XGI_main_26.c
b/drivers/staging/xgifb/XGI_main_26.c
index cc
On Sat, Mar 12, 2016 at 02:35:53AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
> staging-testing
> head: e6b3cd4e349c072336d0d70536f95bb663120cb0
> commit: 293f295593a09ebe430329e242ae1bbf9a35635f [1364/1400] Staging: lustre:
> wi
On the consumer side, we have interrupt driven flow management of the
producer. It is sufficient to base the signalling decision on the
amount of space that is available to write after the read is complete.
The current code samples the previous available space and uses this
in making the signalling
On Fri, Mar 11, 2016 at 08:43:27AM +0100, Ben Marsh wrote:
> This is a patch to rtsx.c that changes the style of memory allocation in
> order to remove a checkpatch.pl warning.
>
> Signed-off-by: Ben Marsh
> ---
> drivers/staging/rts5208/rtsx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletio
On Fri, Mar 11, 2016 at 07:33:30PM +0100, Xose Vazquez Perez wrote:
> On 03/11/2016 06:58 PM, Greg Kroah-Hartman wrote:
>
> > Can you use my linuxfoundation.org email address here, and also add that
>
> OK, but I did a copy from wlan-ng/README to rtl8192u/TODO.
> Anyway, the patch was wrong as Ch
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
staging-testing
head: e6b3cd4e349c072336d0d70536f95bb663120cb0
commit: 293f295593a09ebe430329e242ae1bbf9a35635f [1364/1400] Staging: lustre:
wiretest: Remove int typecast of offsetof().
config: i386-allmodconfig (attache
On 03/11/2016 06:58 PM, Greg Kroah-Hartman wrote:
> Can you use my linuxfoundation.org email address here, and also add that
OK, but I did a copy from wlan-ng/README to rtl8192u/TODO.
Anyway, the patch was wrong as Christian said.
BTW, $ git grep g...@kroah.com
.mailmap:Greg Kroah-Hartman
CREDI
On Sat, Mar 12, 2016 at 02:10:36AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
> staging-testing
> head: 83bf09ba56aafb8c1112150cbce05b44dd476572
> commit: 4e9fec1ea6903bd0b08a2e95659b83261f9c2ae9 [1361/1384] Staging: lustre:
> ap
On 03/09/2016 03:54 PM, Claudiu Beznea wrote:
This patch tries to improve a part of the code from
rtl8712_led.c by removing duplicates condition checks.
Signed-off-by: Claudiu Beznea
---
drivers/staging/rtl8712/rtl8712_led.c | 31 +++
1 file changed, 15 insertions
On Mon, Mar 07, 2016 at 12:33:01AM +0200, Claudiu Beznea wrote:
> This is a patch to the octeon-hcd.c file that fixes up block comments
> warning found by checkpatch.pl tool
>
> Signed-off-by: Claudiu Beznea
> ---
> drivers/staging/octeon-usb/octeon-hcd.c | 3 ++-
> 1 file changed, 2 insertions(
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
staging-testing
head: 83bf09ba56aafb8c1112150cbce05b44dd476572
commit: 4e9fec1ea6903bd0b08a2e95659b83261f9c2ae9 [1361/1384] Staging: lustre:
api-ni: Remove int typecast of offsetof().
config: i386-allmodconfig (attached
On Thu, Feb 25, 2016 at 07:54:16PM +0100, Xose Vazquez Perez wrote:
> BTW, people should not waste time and energy on this driver.
>
> Cc: Jerry Chuang
> Cc: Mauro Carvalho Chehab
> Cc: Christian Lamparter
> Cc: driverdev-devel@linuxdriverproject.org
> Signed-off-by: Xose Vazquez Perez
> ---
>
On Tue, Mar 08, 2016 at 03:55:49AM +0100, Salah Triki wrote:
> The call of read_nic_word_E may fail, therefore its return value must be
> checked.
That's good, but you are doing two different things here, fixing
read_nic_word_E and then changing the return value of some functions
that call that fu
On Sun, Mar 06, 2016 at 12:07:40PM +0530, PrasannaKumar Muralidharan wrote:
> From: PrasannaKumar Muralidharan
>
> Remove usage of volatile for 'request_counter' and 'service_counter'
> members as they are not mapped with any IO register. Remove
> atomic_counter_t as it not necessary anymore.
Th
On Fri, Mar 11, 2016 at 05:05:45PM +0800, Chen Feng wrote:
>
>
> On 2016/3/11 15:30, yalin wang wrote:
> >
> >> On Mar 11, 2016, at 15:23, Lu Bing wrote:
> >>
> >> From: l00215322
> >>
> >> Many android devices have zram,so we should add "MM_SWAPENTS" in tasksize.
> >> Refer oom_kill.c,we add
On Fri, 11 Mar 2016 10:59:02 +0100
Hans Verkuil wrote:
> While userspace may specify FIELD_ANY when setting a format, the
> driver should always map that to a specific field setting and should
> never return FIELD_ANY back to userspace.
>
> In this case, the 'field' field of the v4l2_buffer struc
ICPC NIGERIA
Independent Corrupt Practices and Other
Related Offenses Commission
United Nations Approved Anti-fraud Unit
Head Office: Plot 802, Constitution Avenue
Zone A9 Central Area
P. M.B 535, Garki Abuja
Our Ref: ICPC/NG/FG/016
Date: 10th Of March 2016
(web Acct: kelvinnesmit...@gmail.com )
This patch removes unnecessary "if (true)" check in update_BCNTIM()
from core/rtw_ap.c file. After this remove the code alignment was
necessary.
Signed-off-by: Claudiu Beznea
---
drivers/staging/rtl8188eu/core/rtw_ap.c | 131
1 file changed, 64 insertions(+), 67
On 03/11/2016 09:40 AM, Andrey Utkin wrote:
> On Fri, 11 Mar 2016 09:00:18 +0100
> Hans Verkuil wrote:
>> The reason is likely to be the tw5864_queue_setup function which has
>> not been updated to handle CREATE_BUFS support correctly. It should
>> look like this:
>>
>> static int tw5864_queue_set
On 2016/3/11 15:30, yalin wang wrote:
>
>> On Mar 11, 2016, at 15:23, Lu Bing wrote:
>>
>> From: l00215322
>>
>> Many android devices have zram,so we should add "MM_SWAPENTS" in tasksize.
>> Refer oom_kill.c,we add pte&pmd also.
>>
>> Reviewed-by: Chen Feng
>> Reviewed-by: Fu Jun
>> Reviewed
On Fri, 11 Mar 2016 09:00:18 +0100
Hans Verkuil wrote:
> The reason is likely to be the tw5864_queue_setup function which has
> not been updated to handle CREATE_BUFS support correctly. It should
> look like this:
>
> static int tw5864_queue_setup(struct vb2_queue *q,
>
On 03/09/2016 03:29 PM, Andrey Utkin wrote:
> Hi Hans!
>
> Some improvements took place on the driver, including cleaner
> v4l2-compliance tests passing. But there's a single test failure I
> don't understand.
>
> In the code of v4l2-compliance, it seems like an API
> call CREATE_BUFS is supposed
74 matches
Mail list logo