/* * PC-Speaker driver for Linux * * Copyright (C) 1993-1997 Michael Beck * Copyright (C) 1997-2001 David Woodhouse * Copyright (C) 2001-2008 Stas Sergeev */ #ifndef __PCSP_H__ #define __PCSP_H__ #include #include #include #define PCSP_SOUND_VERSION 0x400 /* read 4.00 */ #define PCSP_DEBUG 0 /* default timer freq for PC-Speaker: 18643 Hz */ #define DIV_18KHZ 64 #define MAX_DIV DIV_18KHZ #define CALC_DIV(d) (MAX_DIV >> (d)) #define CUR_DIV() CALC_DIV(chip->treble) #define PCSP_MAX_TREBLE 1 /* unfortunately, with hrtimers 37KHz does not work very well :( */ #define PCSP_DEFAULT_TREBLE 0 #define MIN_DIV (MAX_DIV >> PCSP_MAX_TREBLE) /* wild guess */ #define PCSP_MIN_LPJ 1000000 #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) #define PCSP_CALC_RATE(i) (PIT_TICK_RATE / CALC_DIV(i)) #define PCSP_RATE() PCSP_CALC_RATE(chip->treble) #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1) #define PCSP_MIN_PERIOD_NS (1000000000ULL * PCSP_MAX_RATE__1) #define PCSP_CALC_NS(div) ({ \ u64 __val = 1000000000ULL * (div); \ do_div(__val, PIT_TICK_RATE); \ __val; \ }) #define PCSP_PERIOD_NS() PCSP_CALC_NS(CUR_DIV()) #define PCSP_MAX_PERIOD_SIZE (64*1024) #define PCSP_MAX_PERIODS 512 #define PCSP_BUFFER_SIZE (128*1024) struct snd_pcsp { struct snd_card *card; struct snd_pcm *pcm; struct input_dev *input_dev; struct hrtimer timer; unsigned short port, irq, dma; spinlock_t substream_lock; struct snd_pcm_substream *playback_substream; unsigned int fmt_size; unsigned int is_signed; size_t playback_ptr; size_t period_ptr; atomic_t timer_active; int thalf; u64 ns_rem; unsigned char val61; int enable; int max_treble; int treble; int pcspkr; }; extern struct snd_pcsp pcsp_chip; extern enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle); extern void pcsp_sync_stop(struct snd_pcsp *chip); extern int snd_pcsp_new_pcm(struct snd_pcsp *chip); extern int snd_pcsp_new_mixer(struct snd_pcsp *chip, int nopcm); #endif ='/cgit.cgi/linux/net-next.git/log/sound/pcmcia/vx/vxpocket.c'>
diff options
context:
space:
mode:
authorKinglong Mee <kinglongmee@gmail.com>2017-01-20 16:48:39 +0800
committerTrond Myklebust <trond.myklebust@primarydata.com>2017-01-24 15:29:24 -0500
commitc929ea0b910355e1876c64431f3d5802f95b3d75 (patch)
tree94339f18c2be5b9308b9f44ac8b450fe58bcc645 /sound/pcmcia/vx/vxpocket.c
parenta430607b2ef7c3be090f88c71cfcb1b3988aa7c0 (diff)
SUNRPC: cleanup ida information when removing sunrpc module
After removing sunrpc module, I get many kmemleak information as, unreferenced object 0xffff88003316b1e0 (size 544): comm "gssproxy", pid 2148, jiffies 4294794465 (age 4200.081s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffffb0cfb58a>] kmemleak_alloc+0x4a/0xa0 [<ffffffffb03507fe>] kmem_cache_alloc+0x15e/0x1f0 [<ffffffffb0639baa>] ida_pre_get+0xaa/0x150 [<ffffffffb0639cfd>] ida_simple_get+0xad/0x180 [<ffffffffc06054fb>] nlmsvc_lookup_host+0x4ab/0x7f0 [lockd] [<ffffffffc0605e1d>] lockd+0x4d/0x270 [lockd] [<ffffffffc06061e5>] param_set_timeout+0x55/0x100 [lockd] [<ffffffffc06cba24>] svc_defer+0x114/0x3f0 [sunrpc] [<ffffffffc06cbbe7>] svc_defer+0x2d7/0x3f0 [sunrpc] [<ffffffffc06c71da>] rpc_show_info+0x8a/0x110 [sunrpc] [<ffffffffb044a33f>] proc_reg_write+0x7f/0xc0 [<ffffffffb038e41f>] __vfs_write+0xdf/0x3c0 [<ffffffffb0390f1f>] vfs_write+0xef/0x240 [<ffffffffb0392fbd>] SyS_write+0xad/0x130 [<ffffffffb0d06c37>] entry_SYSCALL_64_fastpath+0x1a/0xa9 [<ffffffffffffffff>] 0xffffffffffffffff I found, the ida information (dynamic memory) isn't cleanup. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Fixes: 2f048db4680a ("SUNRPC: Add an identifier for struct rpc_clnt") Cc: stable@vger.kernel.org # v3.12+ Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'sound/pcmcia/vx/vxpocket.c')