Changeset 725 for GPL/branches


Ignore:
Timestamp:
Sep 5, 2022, 11:55:50 AM (3 years ago)
Author:
Paul Smedley
Message:

Update source to linux 5.15.65 linux kernel

Location:
GPL/branches/uniaud32-next
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • GPL/branches/uniaud32-next/alsa-kernel/core/control.c

    r697 r725  
    130130                                control->vd[idx].owner = NULL;
    131131        up_write(&card->controls_rwsem);
     132        snd_fasync_free(ctl->fasync);
    132133        snd_ctl_empty_read_queue(ctl);
    133134        put_pid(ctl->pid);
     
    184185                wake_up(&ctl->change_sleep);
    185186                spin_unlock(&ctl->read_lock);
    186                 kill_fasync(&ctl->fasync, SIGIO, POLL_IN);
     187                snd_kill_fasync(ctl->fasync, SIGIO, POLL_IN);
    187188        }
    188189        read_unlock_irqrestore(&card->ctl_files_rwlock, flags);
     
    20162017
    20172018        ctl = file->private_data;
    2018         return fasync_helper(fd, file, on, &ctl->fasync);
     2019        return snd_fasync_helper(fd, file, on, &ctl->fasync);
    20192020}
    20202021
     
    21842185        list_for_each_entry(ctl, &card->ctl_files, list, struct snd_ctl_file) {
    21852186                wake_up(&ctl->change_sleep);
    2186                 kill_fasync(&ctl->fasync, SIGIO, POLL_ERR);
     2187                snd_kill_fasync(ctl->fasync, SIGIO, POLL_ERR);
    21872188        }
    21882189        read_unlock_irqrestore(&card->ctl_files_rwlock, flags);
  • GPL/branches/uniaud32-next/alsa-kernel/core/info.c

    r710 r725  
    113113        mutex_lock(&entry->access);
    114114        if (entry->c.ops->llseek) {
    115                 offset = entry->c.ops->llseek(entry,
    116                                               data->file_private_data,
    117                                               file, offset, orig);
     115                ret = entry->c.ops->llseek(entry,
     116                                           data->file_private_data,
     117                                           file, offset, orig);
    118118                goto out;
    119119        }
  • GPL/branches/uniaud32-next/alsa-kernel/core/misc.c

    r711 r725  
    1111#include <linux/slab.h>
    1212#include <linux/ioport.h>
     13#include <linux/fs.h>
    1314#include <sound/core.h>
    1415
     
    146147EXPORT_SYMBOL(snd_pci_quirk_lookup);
    147148#endif
     149
     150/*
     151 * Deferred async signal helpers
     152 *
     153 * Below are a few helper functions to wrap the async signal handling
     154 * in the deferred work.  The main purpose is to avoid the messy deadlock
     155 * around tasklist_lock and co at the kill_fasync() invocation.
     156 * fasync_helper() and kill_fasync() are replaced with snd_fasync_helper()
     157 * and snd_kill_fasync(), respectively.  In addition, snd_fasync_free() has
     158 * to be called at releasing the relevant file object.
     159 */
     160struct snd_fasync {
     161        struct fasync_struct *fasync;
     162        int signal;
     163        int poll;
     164        int on;
     165        struct list_head list;
     166};
     167
     168static DEFINE_SPINLOCK(snd_fasync_lock);
     169static LIST_HEAD(snd_fasync_list);
     170
     171static void snd_fasync_work_fn(struct work_struct *work)
     172{
     173        struct snd_fasync *fasync;
     174
     175        spin_lock_irq(&snd_fasync_lock);
     176        while (!list_empty(&snd_fasync_list)) {
     177                fasync = list_first_entry(&snd_fasync_list, struct snd_fasync, list);
     178                list_del_init(&fasync->list);
     179                spin_unlock_irq(&snd_fasync_lock);
     180                if (fasync->on)
     181                        kill_fasync(&fasync->fasync, fasync->signal, fasync->poll);
     182                spin_lock_irq(&snd_fasync_lock);
     183        }
     184        spin_unlock_irq(&snd_fasync_lock);
     185}
     186
     187static DECLARE_WORK(snd_fasync_work, snd_fasync_work_fn);
     188
     189int snd_fasync_helper(int fd, struct file *file, int on,
     190                      struct snd_fasync **fasyncp)
     191{
     192        struct snd_fasync *fasync = NULL;
     193
     194        if (on) {
     195                fasync = kzalloc(sizeof(*fasync), GFP_KERNEL);
     196                if (!fasync)
     197                        return -ENOMEM;
     198                INIT_LIST_HEAD(&fasync->list);
     199        }
     200
     201        spin_lock_irq(&snd_fasync_lock);
     202        if (*fasyncp) {
     203                kfree(fasync);
     204                fasync = *fasyncp;
     205        } else {
     206                if (!fasync) {
     207                        spin_unlock_irq(&snd_fasync_lock);
     208                        return 0;
     209                }
     210                *fasyncp = fasync;
     211        }
     212        fasync->on = on;
     213        spin_unlock_irq(&snd_fasync_lock);
     214        return fasync_helper(fd, file, on, &fasync->fasync);
     215}
     216EXPORT_SYMBOL_GPL(snd_fasync_helper);
     217
     218void snd_kill_fasync(struct snd_fasync *fasync, int signal, int poll)
     219{
     220        unsigned long flags;
     221
     222        if (!fasync || !fasync->on)
     223                return;
     224        spin_lock_irqsave(&snd_fasync_lock, flags);
     225        fasync->signal = signal;
     226        fasync->poll = poll;
     227        list_move(&fasync->list, &snd_fasync_list);
     228        schedule_work(&snd_fasync_work);
     229        spin_unlock_irqrestore(&snd_fasync_lock, flags);
     230}
     231EXPORT_SYMBOL_GPL(snd_kill_fasync);
     232
     233void snd_fasync_free(struct snd_fasync *fasync)
     234{
     235        if (!fasync)
     236                return;
     237        fasync->on = 0;
     238        flush_work(&snd_fasync_work);
     239        kfree(fasync);
     240}
     241EXPORT_SYMBOL_GPL(snd_fasync_free);
  • GPL/branches/uniaud32-next/alsa-kernel/core/timer.c

    r711 r725  
    8585        struct timespec64 tstamp;               /* trigger tstamp */
    8686        wait_queue_head_t qchange_sleep;
    87         struct fasync_struct *fasync;
     87        struct snd_fasync *fasync;
    8888        struct mutex ioctl_lock;
    8989};
     
    13621362      __wake:
    13631363        spin_unlock(&tu->qlock);
    1364         kill_fasync(&tu->fasync, SIGIO, POLL_IN);
     1364        snd_kill_fasync(tu->fasync, SIGIO, POLL_IN);
    13651365        wake_up(&tu->qchange_sleep);
    13661366}
     
    14001400        snd_timer_user_append_to_tqueue(tu, &r1);
    14011401        spin_unlock_irqrestore(&tu->qlock, flags);
    1402         kill_fasync(&tu->fasync, SIGIO, POLL_IN);
     1402        snd_kill_fasync(tu->fasync, SIGIO, POLL_IN);
    14031403        wake_up(&tu->qchange_sleep);
    14041404}
     
    14701470        if (append == 0)
    14711471                return;
    1472         kill_fasync(&tu->fasync, SIGIO, POLL_IN);
     1472        snd_kill_fasync(tu->fasync, SIGIO, POLL_IN);
    14731473        wake_up(&tu->qchange_sleep);
    14741474}
     
    15381538                }
    15391539                mutex_unlock(&tu->ioctl_lock);
     1540                snd_fasync_free(tu->fasync);
    15401541                kfree(tu->queue);
    15411542                kfree(tu->tqueue);
     
    21522153
    21532154        tu = file->private_data;
    2154         return fasync_helper(fd, file, on, &tu->fasync);
     2155        return snd_fasync_helper(fd, file, on, &tu->fasync);
    21552156}
    21562157
  • GPL/branches/uniaud32-next/alsa-kernel/include/sound/control.h

    r694 r725  
    110110        wait_queue_head_t change_sleep;
    111111        spinlock_t read_lock;
    112         struct fasync_struct *fasync;
     112        struct snd_fasync *fasync;
    113113        int subscribed;                 /* read interface is activated */
    114114        struct list_head events;        /* waiting events for read */
  • GPL/branches/uniaud32-next/alsa-kernel/include/sound/core.h

    r711 r725  
    543543#endif
    544544
     545/* async signal helpers */
     546struct snd_fasync;
     547
     548int snd_fasync_helper(int fd, struct file *file, int on,
     549                      struct snd_fasync **fasyncp);
     550void snd_kill_fasync(struct snd_fasync *fasync, int signal, int poll);
     551void snd_fasync_free(struct snd_fasync *fasync);
     552
    545553#endif /* __SOUND_CORE_H */
  • GPL/branches/uniaud32-next/alsa-kernel/include/sound/version.h

    r712 r725  
    11/* include/version.h */
    2 #define CONFIG_SND_VERSION "5.15.59"
     2#define CONFIG_SND_VERSION "5.15.65"
    33#define CONFIG_SND_DATE ""
  • GPL/branches/uniaud32-next/alsa-kernel/pci/hda/patch_cirrus.c

    r710 r725  
    400400        /* codec SSID */
    401401        SND_PCI_QUIRK(0x106b, 0x0600, "iMac 14,1", CS420X_IMAC27_122),
     402        SND_PCI_QUIRK(0x106b, 0x0900, "iMac 12,1", CS420X_IMAC27_122),
    402403        SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81),
    403404        SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122),
  • GPL/branches/uniaud32-next/alsa-kernel/pci/hda/patch_conexant.c

    r711 r725  
    229229        CXT_PINCFG_COMPAQ_CQ60,
    230230        CXT_FIXUP_STEREO_DMIC,
     231        CXT_PINCFG_LENOVO_NOTEBOOK,
    231232        CXT_FIXUP_INC_MIC_BOOST,
    232233        CXT_FIXUP_HEADPHONE_MIC_PIN,
     
    813814                .v.func = cxt_fixup_stereo_dmic,
    814815        },
     816#ifdef TARGET_OS2xxx
     817        [CXT_PINCFG_LENOVO_NOTEBOOK] = {
     818                .type = HDA_FIXUP_PINS,
     819                .v.pins = (const struct hda_pintbl[]) {
     820                        { 0x1a, 0x05d71030 },
     821                        { }
     822                },
     823                .chain_id = CXT_FIXUP_STEREO_DMIC,
     824        },
     825#endif
    815826        [CXT_FIXUP_INC_MIC_BOOST] = {
    816827                .type = HDA_FIXUP_FUNC,
     
    10321043        SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC),
    10331044        SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC),
    1034         SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC),
     1045        SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_PINCFG_LENOVO_NOTEBOOK),
    10351046        SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo G50-70", CXT_FIXUP_STEREO_DMIC),
    10361047        SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC),
  • GPL/branches/uniaud32-next/alsa-kernel/pci/hda/patch_realtek.c

    r720 r725  
    74197419        ALC269VB_FIXUP_ASUS_ZENBOOK,
    74207420        ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A,
     7421        ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE,
    74217422        ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED,
    74227423        ALC269VB_FIXUP_ORDISSIMO_EVE2,
     
    82508251                .chain_id = ALC269VB_FIXUP_ASUS_ZENBOOK,
    82518252        },
     8253#ifdef TARGET_OS2xxx
     8254        [ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE] = {
     8255                .type = HDA_FIXUP_PINS,
     8256                .v.pins = (const struct hda_pintbl[]) {
     8257                        { 0x18, 0x01a110f0 },  /* use as headset mic */
     8258                        { }
     8259                },
     8260                .chained = true,
     8261                .chain_id = ALC269_FIXUP_HEADSET_MIC
     8262        },
     8263#endif
    82528264        [ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED] = {
    82538265                .type = HDA_FIXUP_FUNC,
     
    98699881        SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED),
    98709882        SND_PCI_QUIRK(0x103c, 0x86c7, "HP Envy AiO 32", ALC274_FIXUP_HP_ENVY_GPIO),
     9883        SND_PCI_QUIRK(0x103c, 0x86e7, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1),
     9884        SND_PCI_QUIRK(0x103c, 0x86e8, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1),
    98719885        SND_PCI_QUIRK(0x103c, 0x8716, "HP Elite Dragonfly G2 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
    98729886        SND_PCI_QUIRK(0x103c, 0x8720, "HP EliteBook x360 1040 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
     
    98849898        SND_PCI_QUIRK(0x103c, 0x8783, "HP ZBook Fury 15 G7 Mobile Workstation",
    98859899                      ALC285_FIXUP_HP_GPIO_AMP_INIT),
     9900        SND_PCI_QUIRK(0x103c, 0x8786, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
    98869901        SND_PCI_QUIRK(0x103c, 0x8787, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
    98879902        SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
     
    99349949        SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
    99359950        SND_PCI_QUIRK(0x1043, 0x12f0, "ASUS X541UV", ALC256_FIXUP_ASUS_MIC),
     9951        SND_PCI_QUIRK(0x1043, 0x1313, "Asus K42JZ", ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE),
    99369952        SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
    99379953        SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
     
    1000910025        SND_PCI_QUIRK(0x1558, 0x4019, "Clevo NV40MZ", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1001010026        SND_PCI_QUIRK(0x1558, 0x4020, "Clevo NV40MB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
     10027        SND_PCI_QUIRK(0x1558, 0x4041, "Clevo NV4[15]PZ", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1001110028        SND_PCI_QUIRK(0x1558, 0x40a1, "Clevo NL40GU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1001210029        SND_PCI_QUIRK(0x1558, 0x40c1, "Clevo NL40[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
     
    1003610053        SND_PCI_QUIRK(0x1558, 0x70f6, "Clevo NH77DPQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1003710054        SND_PCI_QUIRK(0x1558, 0x7716, "Clevo NS50PU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
     10055        SND_PCI_QUIRK(0x1558, 0x7717, "Clevo NS70PU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1003810056        SND_PCI_QUIRK(0x1558, 0x7718, "Clevo L140PU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
    1003910057        SND_PCI_QUIRK(0x1558, 0x8228, "Clevo NR40BU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
  • GPL/branches/uniaud32-next/include/linux/slab.h

    r723 r725  
    9494static inline void *kzalloc(size_t size, gfp_t flags)
    9595{
    96         return kmalloc(size, flags | __GFP_ZERO);
     96        return __kmalloc(size, flags | __GFP_ZERO);
    9797}
    9898
  • GPL/branches/uniaud32-next/include/linux/types.h

    r718 r725  
    138138typedef phys_addr_t resource_size_t;
    139139
     140#define ATOMIC_INIT(i) { (i) }
     141#define ATOMIC_LONG_INIT(i)             ATOMIC_INIT(i)
    140142#endif /* _LINUX_TYPES_H */
  • GPL/branches/uniaud32-next/include/linux/workqueue.h

    r688 r725  
    1818        struct timer_list timer;
    1919};
     20
     21#define WORK_DATA_STATIC_INIT() \
     22        ATOMIC_LONG_INIT((unsigned long)(WORK_STRUCT_NO_POOL | WORK_STRUCT_STATIC))
    2023
    2124struct workqueue_struct {
     
    5255                init_timer(&(_work)->timer);            \
    5356        } while (0)
    54 #define __WORK_INITIALIZER(n, f, d) {                   \
    55                 .func = (f),                            \
    56                 .data = (d),                            \
     57#define __WORK_INITIALIZER(n, f) {                      \
     58        .data = 0,                              \
     59        .func = (f),                            \
    5760        }
    58 #define DECLARE_WORK(n, f, d)                           \
    59         struct work_struct n = __WORK_INITIALIZER(n, f, d)
     61
     62#define DECLARE_WORK(n, f)                                              \
     63        struct work_struct n = __WORK_INITIALIZER(n, f)
    6064
    6165/* redefine INIT_WORK() */
  • GPL/branches/uniaud32-next/lib32/memory.c

    r723 r725  
    766766        return buf;
    767767}
     768
    768769//******************************************************************************
    769770//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.