Showing error 836

User: Jiri Slaby
Error type: Resource Leak
Error type description: The code omits to put the resource to the system for reuse
File location: drivers/misc/sgi-gru/grukservices.c
Line in file: 106
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:40:13 UTC


Source:

 76/*----------------- RESOURCE MANAGEMENT -------------------------------------*/
 77/* optimized for x86_64 */
 78struct message_queue {
 79        union gru_mesqhead        head __gru_cacheline_aligned__;        /* CL 0 */
 80        int                        qlines;                                /* DW 1 */
 81        long                         hstatus[2];
 82        void                         *next __gru_cacheline_aligned__;/* CL 1 */
 83        void                         *limit;
 84        void                         *start;
 85        void                         *start2;
 86        char                        data ____cacheline_aligned;        /* CL 2 */
 87};
 88
 89/* First word in every message - used by mesq interface */
 90struct message_header {
 91        char        present;
 92        char        present2;
 93        char         lines;
 94        char        fill;
 95};
 96
 97#define QLINES(mq)        ((mq) + offsetof(struct message_queue, qlines))
 98#define HSTATUS(mq, h)        ((mq) + offsetof(struct message_queue, hstatus[h]))
 99
100static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr)
101{
102        struct gru_blade_state *bs;
103        int lcpu;
104
105        BUG_ON(dsr_bytes > GRU_NUM_KERNEL_DSR_BYTES);
106        preempt_disable();
107        bs = gru_base[uv_numa_blade_id()];
108        lcpu = uv_blade_processor_id();
109        *cb = bs->kernel_cb + lcpu * GRU_HANDLE_STRIDE;
110        *dsr = bs->kernel_dsr + lcpu * GRU_NUM_KERNEL_DSR_BYTES;
111        return 0;
112}
113
114static void gru_free_cpu_resources(void *cb, void *dsr)
115{
116        preempt_enable();
Show full sources